Bash-使用目标从txt文件移动文件
我有一个文本文件(log.txt),其中包含我希望文件结束的文件路径列表Bash-使用目标从txt文件移动文件,bash,shell,mv,Bash,Shell,Mv,我有一个文本文件(log.txt),其中包含我希望文件结束的文件路径列表 /root/NewDir/Testfile.txt /root/NewDir/Testfile2.txt /root/NewDir2/Alsoatest.txt ... 这些文件当前与log.txt位于同一位置 /root/Dustbin/log.txt /root/Dustbin/Testfile.txt /root/Dustbin/Testfile2.txt /root/Dustbin/Alsoatest.txt .
/root/NewDir/Testfile.txt
/root/NewDir/Testfile2.txt
/root/NewDir2/Alsoatest.txt
...
这些文件当前与log.txt位于同一位置
/root/Dustbin/log.txt
/root/Dustbin/Testfile.txt
/root/Dustbin/Testfile2.txt
/root/Dustbin/Alsoatest.txt
...
我正在尝试创建一个脚本,它可以只获取文件名,并将指定的文件移动到log.txt文件中指定的位置
例如:
# restore Testfile.txt
结果应该是Testfile.txt从/root/Dustbin/移动。。。到/root/NewDir/
我是bash/shellscript的新手,已经尝试研究了几个小时,但完全被难倒了!
我知道我需要使用“mv”函数,但我不确定如何通过匹配文件名,用log.txt文件中指定的值填充目标
有没有人能给我指出正确的方向?试试:
#!/bin/bash
dustbin="/root/Dustbin"
file="$1"
mv $dustbin/$file $(grep "/$file$" $dustbin/log.txt)
根据您的需求,您可以改进脚本,在“mv”之前添加一个“mkdir” 试试:
#!/bin/bash
dustbin="/root/Dustbin"
file="$1"
mv $dustbin/$file $(grep "/$file$" $dustbin/log.txt)
根据您的需求,您可以改进脚本,在“mv”之前添加一个“mkdir” 因此,不存在编写代码的问题,这个问题可能会让您从正确的方向以及
basename
函数开始。如果遇到问题,请将有问题的代码添加到此问题中,我们将帮助循环查看log.txt
,并对每个文件名调用basename
,这将返回不带目录的文件名。如果与您尝试还原的名称匹配,则使用文件名作为mv
的目标。除了尝试搜索类似回答的问题和研究mv
的其他建议外,请查看并重命名。因此,不存在编写代码的文件名,这个问题可能会让您从正确的方向以及basename
函数开始。如果遇到问题,请将有问题的代码添加到此问题中,我们将帮助循环查看log.txt
,并对每个文件名调用basename
,这将返回不带目录的文件名。如果该名称与您尝试还原的名称相匹配,则将该文件名用作mv
的目标。除了尝试搜索类似已回答问题和研究mv
的其他建议之外,查看并重命名。感谢这一点,它帮助我找到了正确的方向,让我的脚本更接近我想要的方式。感谢这一点,它帮助我找到了正确的方向,让我的脚本更接近我想要的方式