我有一个文件(ordered_names),其格式为
pub 000.html
pub.19 001.html
大约 300 行,我找不到将其提供给 mv 命令的方法。
我读过了提供存储在文件中的字符串作为命令的参数列表?,但我无法得到我想要的东西。
以下是我所做的一些尝试:
for line in "$(cat ../ordered_files.reversed)"; do mv $(echo "$line"); done
for line in "$(cat ../ordered_files.reversed)"; do echo mv $(echo $line | cut -d' ' -f 1) $(echo $line | cut -d' ' -f 2) ; done
答案1
尝试:
while read -r file1 file2; do mv -n -- "$file1" "$file2"; done <inputfile
这假设输入文件中每一行的文件名都是以空格分隔的。当然,这仅在文件名本身不包含空格的情况下有效。如果是这样,那么您需要不同的输入格式。
怎么运行的
while read -r file1 file2; do
这将开始一个
while
循环。只要输入可用,循环就会继续。对于每一行输入,都会读取两个参数:file1
和file2
。mv -n -- "$file1" "$file2"
这移动
file1
到file2
.该选项
-n
可防止您覆盖目标位置的任何文件。当然,如果您打算覆盖文件,请删除此选项。该字符串
--
表示选项的结束。如果任何文件名以-
.done
这标志着循环的结束
while
。<inputfile
这告诉
while
循环从名为 的文件获取输入inputfile
。