你能解释一下这个命令的作用吗:
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
特别是这个命令的这一部分
xargs -I fname cp -p fname ../htory2/somefile.CSV
答案1
xargs
将输入转换为参数。该-I
选项指定用作参数占位符的字符串。因此,如果管道输出类似
file1
file2
然后该xargs
行将其转换为
cp -p file1 ../htory2/somefile.CSV
cp -p file2 ../htory2/somefile.CSV
不过,唯一head -1
返回一行,所以我看不出使用xargs
而不是真正的好处,比如说
cp -p "$(ls -t1 ../htory/$filename* | head -1)" ../htory2/somefile.CSV
而且,由于目标文件始终相同,因此它会被 .txt 中的最后一个文件覆盖${files[@]}
。