ご注文を楽しみにしています
ls -d doc/* | grep -P "<some_pattern>" | xargs bash -ic echo
以下を行います。
ls -d doc/* | grep -P "<some_pattern>" | xargs echo
ls -d doc/* | grep -P "<some_pattern>"
つまり、改行ではなくスペースで区切られた一致するファイルを提供します。
しかし、出力として改行文字のみを取得します。
なぜこれですか?必要な操作を実行するように最初のコマンドを変更するにはどうすればよいですか?
zsh
しかし、実際には代わりに使用していますが、bash
どちらも機能しません。
実際、「grep」で指定されたパターンと一致するファイル名を持つ複数のファイルを印刷し、.zshrc
-aliasedコマンドを使用して印刷する必要がある場合は、この機能が必要です。
答え1
Bashのマンページから
-c string If the -c option is present, then commands are read from
string. If there are arguments after the string, they are
assigned to the positional parameters, starting with $0.
だから...
$ echo a b c d e f g | xargs bash -ic echo
$ echo a b c d e f g | xargs bash -ic 'echo $0 $@'
a b c d e f g