Osx
dirname 似乎不適用於 xargs
xargs
並basename
按照我的期望一起工作:$ printf '%s\n' foo/index.js bar/index.js baz/index.js | xargs basename index.js index.js index.js
xargs
和dirname
,但是,似乎不能一起工作:$ printf '%s\n' foo/index.js bar/index.js baz/index.js | xargs dirname usage: dirname path
我希望
foo bar baz
作為輸出。我錯過了什麼?
我在 Darwin 18.2.0 (macOS 10.14.3) 上。
dirname
在 macOS 上只需要一個路徑名,而basename
能夠使用多個路徑名。然而,使用單個路徑名呼叫是最安全的,basename
這樣它就不會意外嘗試從第一個路徑名的末尾刪除第二個路徑名,如$ basename some/file e fil
從您呼叫這些實用程序時,
xargs
您可能會要求xargs
一次使用單個換行符分隔的字元串執行該實用程序:printf '%s\n' some arguments | xargs -I {} basename {}
或者,
printf '%s\n' some arguments | xargs -I {} dirname {}
您也可以使用
xargs -L 1 utility
而不是xargs -I {} utility {}
.