我有一个文件列表,带有它们的完整路径,文件“files.txt”中每行一个
我试图将所有这些文件从它们的原始位置移动到一个新目录。
我 CD 进入他们现在居住的目录并发出
for file in ~/Desktop/files.txt do mv $file ~/newfolder
但什么也没有发生。我确定我遗漏了一些明显的东西
Nif*_*fle 12
bash 不会读取文件的内容,除非你告诉它。
for file in $(cat ~/Desktop/files.txt); do mv "$file" ~/newfolder; done
Run Code Online (Sandbox Code Playgroud)
你需要告诉你的循环读取文件,否则它只是在执行:
mv ~/Desktop/files.txt ~/newfolder
Run Code Online (Sandbox Code Playgroud)
此外,正如 nerdwaller 所说,您需要分隔符。尝试这个:
while read file; do mv "$file" ~/newfolder; done < ~/Desktop/files.txt
Run Code Online (Sandbox Code Playgroud)
如果您的路径或文件名包含空格或其他奇怪的字符,您可能需要这样做:
while IFS= read -r file; do mv "$file" ~/newfolder; done < ~/Desktop/files.txt
Run Code Online (Sandbox Code Playgroud)
注意变量"
周围的引号$file
。
如果文件名不包含空格:
mv -t dest_dir $(< text.file)
Run Code Online (Sandbox Code Playgroud)
可能是最简洁的方式。
如果文件名中有空格
while IFS= read -r filename; do mv "$filename" dest_dir; done < test.file
Run Code Online (Sandbox Code Playgroud)
是安全的。
归档时间: |
|
查看次数: |
31638 次 |
最近记录: |