xargs -I 命令的目的是什么?

jra*_*ara 5 xargs shell-script

你能解释一下这个命令的作用吗:

files=(this_is_filename)
for filename in ${files[@]}; do 
  ls -t1 ../htory/$filename* |
    head -1 |
    xargs -I fname cp -p fname ../htory2/somefile.CSV
done
Run Code Online (Sandbox Code Playgroud)

特别是这个命令的这一部分

xargs -I fname cp -p fname ../htory2/somefile.CSV
Run Code Online (Sandbox Code Playgroud)

cho*_*oba 7

xargs将输入转换为参数。该-I选项指定用作参数占位符的字符串。因此,如果管道输出类似

file1
file2
Run Code Online (Sandbox Code Playgroud)

然后该xargs行将其转换为

cp -p file1 ../htory2/somefile.CSV
cp -p file2 ../htory2/somefile.CSV
Run Code Online (Sandbox Code Playgroud)

head -1只返回一行,虽然如此,我可以看到使用的没有真正的好处xargs,比方说,而不是

cp -p "$(ls -t1 ../htory/$filename* | head -1)" ../htory2/somefile.CSV
Run Code Online (Sandbox Code Playgroud)

此外,由于目标文件总是相同的,它会被${files[@]}.