这不是 Ubuntu 特定的问题,它适用于所有 unix/linux。
我怎样才能运行这样的命令:
find . -maxdepth 1 -type d -print -exec svn info "{}" | grep URL \;
Run Code Online (Sandbox Code Playgroud)
上面的命令没有做我想要的,我似乎无法将 svn 信息的输出通过管道传输到 grep。
这有效,但输出包含的内容比我需要的要多得多:
find . -maxdepth 1 -type d -print -exec svn info "{}" \;
Run Code Online (Sandbox Code Playgroud)
有任何想法吗?
一般来说,我发现xargs使用比 find 的 -exec 选项要理智得多。这对于加快速度尤其如此,因为没有为 find 的每一行输出启动单独的“svn”:
find . -maxdepth 1 -type d | xargs svn info | grep URL
Run Code Online (Sandbox Code Playgroud)
如果您正在处理具有奇怪名称(空格、换行符等)的文件,只需添加-print0到 find 和-0xargs:
find . -maxdepth 1 -type d -print0 | xargs -0 svn info | grep URL
Run Code Online (Sandbox Code Playgroud)
如果您正在处理只能接受 1 个参数的程序,则可以使用-n1xargs:
find . -maxdepth 1 -type d -print0 | xargs -0 -n1 svn info | grep URL
Run Code Online (Sandbox Code Playgroud)