打印文件夹中的所有文件

打印文件夹中的所有文件

假设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

相关内容