将文件列表(在文本文件中)移动到目录?

将文件列表(在文本文件中)移动到目录?

我有一个文件列表,其中包含它们的完整路径,文件“files.txt”中每行一个

我试图将所有这些文件从原始位置移动到新目录。

我用 CD 进入了它们现在所在的目录并发布了

for file in ~/Desktop/files.txt do mv $file ~/newfolder

但什么都没发生。我肯定我忽略了一些显而易见的事情

答案1

除非您告诉它,否则 bash 不会读取文件的内容。

for file in $(cat ~/Desktop/files.txt); do mv "$file" ~/newfolder; done

答案2

你需要告诉你的循环文件,否则它只是执行:

mv ~/Desktop/files.txt ~/newfolder

此外,正如 nerdwaller 所说,您需要分隔符。试试这个:

while read file; do mv "$file" ~/newfolder; done < ~/Desktop/files.txt

如果您的路径或文件名包含空格或其他奇怪的字符,您可能需要执行以下操作:

while IFS= read -r file; do mv "$file" ~/newfolder; done < ~/Desktop/files.txt

"注意变量周围的引号$file

答案3

如果文件名不包含空格:

mv -t dest_dir $(< text.file)

可能是最简洁的方法。

如果文件名中有空格

while IFS= read -r filename; do mv "$filename" dest_dir; done < test.file

是安全的。

答案4

尝试这个:

python -c "导入shutil;[shutil.move(_.strip(),'new') for _ in open('files.txt').readlines()];"

相关内容