[英]Move multiple files from a folder to list of directories (Undo a move command)
我想通过将文件夹(“ 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编写循环,因此非常感谢您的帮助! (类似地,还希望使用命令将这些文件复制回原始文件夹,而不是移动它们,从而使时间戳保持不变:-))
据我了解,您需要:
下面的代码应该有所帮助:
while read line; do
fileName=$(basename $line)
dirName=$(dirname $line)
cp SourceDir/"$fileName" "$dirName"
done < ListOfFilePaths.txt
basename
从文件路径中提取文件名。 dirname
从文件路径中提取目录。
参考文献:
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.