从查找传递文件名并执行命令

从查找传递文件名并执行命令

我正在尝试编写一个脚本来查找某些文件并使用它找到的文件执行命令。听起来不太难,但我在让它工作时遇到了很多麻烦。基本上这就是我正在做的事情:

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'(确保转义单引号)

相关内容