假设ls
返回file1 file2 dir1 dire2 ...
,我想打印you have file1 file2 dir1 dire2 ... in currnent folder
。
我怎样才能做到这一点?
ls | xargs -i echo 'you have {} in current folder'
印刷
当前文件夹中有 file1 当前文件夹中有 file2 当前文件夹中有 dir1 当前文件夹中有 dir2 当前文件夹中有 xxx
另外,我已经尝试过
ls |xargs printf 'you have %s %s %s %s in current folder'
但无法使其发挥作用。因为文件的数量是不确定的。printf
在这种情况下,正确的语法是什么?
ls | xargs printf 'you have $@ in current folder'
是我能得到的最接近的,但它不起作用。
答案1
以下内容可行,但可能会产生一些负面的安全影响:
echo "You have" * "in current folder"
IMO 是一个更好的方法,但需要两行:
files=(*)
echo "You have ${files[@]} in curent folder"
使用 printf:
files=(*)
printf '%s ' "You have ${files[@]} in current folder"
答案2
物有所值:
echo You have $(ls) in the current folder
答案3
我认为 Jesse_b 的解决方案是最好的,但如果你想要类似的东西,xargs
你可以使用 GNU Parallel:
ls | parallel --xargs echo you have {} in current folder