如何读取 bash 命令每行的多个参数?

如何读取 bash 命令每行的多个参数?

我有一个文件(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循环。只要输入可用,循环就会继续。对于每一行输入,都会读取两个参数:file1file2

  • mv -n -- "$file1" "$file2"

    这移动file1file2.

    该选项-n可防止您覆盖目标位置的任何文件。当然,如果您打算覆盖文件,请删除此选项。

    该字符串--表示选项的结束。如果任何文件名以-.

  • done

    这标志着循环的结束while

  • <inputfile

    这告诉while循环从名为 的文件获取输入inputfile

相关内容