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)を使用しています。
ベストアンサー1
dirname
macOSでは単一のパス名のみが使用されますが、basename
複数のパス名を使用できます。ただしbasename
、以下のように、誤って最初のパス名の末尾から2番目のパス名を削除しようとしないように、単一のパス名で呼び出すのが最も安全です。
$ basename some/file e
fil
これらのユーティリティを呼び出すと、一度に1つの改行で区切られた文字列でユーティリティを実行するように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 {}
。