Xargs

xargs 給我錯誤無法打開“{}”(沒有這樣的文件或目錄)

  • July 8, 2016

誰能解釋為什麼下面的命令會產生以下錯誤:

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

因為你用xargs錯了,你可能受到了 find 工作原理的啟發。

xargs接受輸入並將其分成幾部分以產生幾個命令,但是(除非你已經要求它)它在你在 xargs 之後指定的命令的末尾給出了多個參數,所以你{}只是命令的一部分。所以你最終執行file {} <file_1> <file_2> ... <file_n>, file {} <file_n+1>..., …. (在你的情況下,你的文件太少,只執行一個命令。)

由於您沒有名為 的文件{}file因此告訴您。

引用自:https://unix.stackexchange.com/questions/294661