我有一个格式为的文件(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
尝试:
这假定输入文件中每一行的文件名是用空格分隔的。当然,这仅适用于文件名本身不包含空格的情况。如果他们这样做,那么您需要不同的输入格式。
这个怎么运作
while read -r file1 file2; do
这开始了一个
while
循环。只要输入可用,循环就会继续。对于每一行输入,读取两个参数:file1
和file2
。mv -n -- "$file1" "$file2"
这移动
file1
到file2
。该选项
-n
可防止您覆盖目标位置的任何文件。当然,如果您打算覆盖文件,请删除此选项。该字符串
--
表示选项的结束。如果任何文件名以-
.done
这标志着
while
循环的结束。<inputfile
这告诉
while
循环从名为inputfile
.