如何将文件从“查找”发送到另一个程序?

如何将文件从“查找”发送到另一个程序?

如果这是错误的 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

或者

循环执行 `ls` 生成 bash shell 脚本

-贾斯汀

编辑-添加了另一个链接,以便您可以点击它。

相关内容