xargsで '{}'を開くことができないというエラーが発生しました。 (該当するファイルやディレクトリはありません。)

xargsで '{}'を開くことができないというエラーが発生しました。 (該当するファイルやディレクトリはありません。)

次のコマンドが次のエラーを生成する理由を説明できる人はいますか?

cannot open `{}' (No such file or directory)

注文する

$ ls -al|grep -v '^d\|^$'|awk '{print $10}'|xargs file '{}'

予期した結果が出ましたが、エラーが発生しました。

{}:          cannot open `{}' (No such file or directory)
cpuinfo:     empty
cygdrive:    symbolic link to /cygdrive
devices:     empty
filesystems: empty
loadavg:     empty
meminfo:     empty
misc:        empty
mounts:      symbolic link to self/mounts
partitions:  empty
self:        symbolic link to 19812
stat:        empty
swaps:       empty
uptime:      empty
version:     empty

答え1

誤って使用しているため、xargsfindの仕組みに触発されています。

xargs入力を受け取り、複数のコマンドを生成するために複数の部分に分割しますが(要求しない限り)、xargsの後に指定するコマンドの末尾に複数の引数を提供するため、コマンド{}の一部にすぎません。したがってfile {} <file_1> <file_2> ... <file_n>、、、.... を実行することになります。file {} <file_n+1>...(あなたの場合、ファイルはほとんどなく、1つのコマンドのみを実行します。)

というファイルがないので教えてくれます{}file

関連情報