検索と実行コマンドでファイル名を渡す

検索と実行コマンドでファイル名を渡す

特定のファイルを見つけ、見つかったファイルを使用してコマンドを実行するスクリプトを作成しようとしています。あまり難しくないようですが、うまくいくのに苦労しました。基本的に私がすることは次のとおりです。

find /Users/Me/MyFolder -name '*filename.tsv' -print0 -exec /usr/bin/java -jar -Xmx2G /Volumes/Macintosh\ HD/Applications/mMyApp/MyApp.jar -s "," -e "." {}  > {}-new.tsv \;

{}-new.tsv結果は、見つかったすべてのファイルの出力を含むMyApp.jarというファイルです。

誰もが私が間違っていることを明らかにすることができますか?

ベストアンサー1

わかりました。解決しました。明らかに中かっこを隠す必要があります。

find /Users/Me/MyFolder -name '*filename.tsv' -print0 -exec bash -c '/usr/bin/java -jar -Xmx2G /Volumes/Macintosh\ HD/Applications/mMyApp/MyApp.jar -s "," -e "." "$1"  > "$1-new.tsv"' {} \;

また、コマンドは以下を使用して呼び出す必要がありますbash -c 'command string'(単一引用符をエスケープする必要があります)。

おすすめ記事