我有一个文件列表,其中包含它们的完整路径,文件“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()];"