私に2つのコマンド(echo
および)を適用しようとしています。haml --check
find
haml --check `find . -name "*.haml"`
# return Syntax error on line 2: Illegal nesting: nesting within plain text is illegal.
# but I don't know which file
echo `find . -name "*.haml"`
# returns list of files (space separated)
理想的にはファイル名を印刷してhaml --check
からstdout
。
答え1
xargsがない方法もあります。
find . -name "*.haml" -ls -exec haml --check {} \;
パスを含むファイル名のみを印刷します。
find . -name "*.haml" -print -exec haml --check {} \;
答え2
find . -name "*.haml" -print0 | xargs -0 -n 1 --no-run-if-empty haml --check
見つかった各ファイルに対してhamlを実行します。find
haml
1回の呼び出しで複数のファイルを取得できる場合は省略可能-n 1
答え3
以下は、GNU固有の「-print0」および「xargs -0」トリックを使用せずにfindを使用して複数のコマンドを実行する移植可能で効率的な方法です。
find . -name "*.haml" -exec sh -c 'for i; do echo $i;ls -l $i;haml --check $i; done' sh {} +