我想通过将文件夹中的所有文件(“MySourceDir”)移回到.txt文件中指定的相应路径(“ListOfFilePaths.txt”)来撤消我执行的移动命令。
例如:
MySourceDir
File1.txt
File2.txt
File3.txt
.
.
.
我有一个文本文件,其中包含每个文件的文件路径,指示它们最初所在的目录,因此需要移回。
ListOfFilePaths.txt
/path/to/dirA/File1.txt
/path/to/dirB/File2.txt
/path/to/dirC/File3.txt
我可以用两种方式做到这一点。写一个循环1)grep每个文件的目录路径,然后将其移动到相应的grepped目录路径或者2)从目录路径中删除“File#.txt”部分,然后为每个文件执行mv命令列表,以便将第n个文件移动到第n个目录。
在任何一种情况下,我都不熟悉在bash中编写循环,所以任何帮助都会非常感激! (同样,也会感谢命令将这些文件复制回原始文件夹而不是移动它们,保持时间戳保持不变:-))
答案 0 :(得分:0)
根据我的理解,您需要:
以下代码应该有所帮助:
while read line; do
fileName=$(basename $line)
dirName=$(dirname $line)
cp SourceDir/"$fileName" "$dirName"
done < ListOfFilePaths.txt
basename
从文件路径中提取文件名。
dirname
从文件路径中提取目录。
参考文献: