如果这是错误的 stack* 网站,我很抱歉,但我正在尝试如何将 find 的结果发送到另一个应用程序?我试图做的是找到所有 *.plist 文件并将它们发送到 plutil 以将它们转换为二进制格式。但我不知道如何将它们“管道化”(我知道,术语错误,但它有效。)到 plutil。
不,我正在尝试使用来自 find 的输入批量转换它们,因为它会递归搜索每个 plist,然后我想将给定文件夹中找到的所有 plist 传输到 plutil 中。
答案1
这值得重复。如果你想对一组文件采取行动……
您永远不需要通过管道将输出传送find
到其他东西。
通过管道传输命令的输出来提供文件列表的做法经常是错误的。你不需要for
为此使用循环,也不需要使用循环find … | xargs
。
要对 找到的一组文件采取行动find
,请使用该-exec
选项。
find /some/path -iname '*.plist' -exec plutil -convert xml1 '{}' \;
这里,'{}'
被替换为找到的每个文件的名称。
如果您想要一种强大的管道输出方式find
来对循环中找到的文件进行操作,请考虑以下几点:
find … -print0 | while IFS= read -r -d '' file
do
plutil -convert xml1 "$file"
done
答案2
是否存在权限问题阻碍您执行此操作?
否则尝试这个:
https://discussions.apple.com/thread/2344258?start=0&tstart=0
或者
-贾斯汀
编辑-添加了另一个链接,以便您可以点击它。