フォルダ内のすべてのファイルを印刷する

フォルダ内のすべてのファイルを印刷する

lsreturnを仮定すると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はより良いアプローチですが、次の2行が必要です。

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のソリューションが最高だと思いますが、似たようなものが必要な場合はxargsGNU Parallelを使用できます。

ls | parallel --xargs echo you have {} in current folder

関連情報