通过unix管道传输带有空格的路径

时间:2015-08-04 15:48:12

标签: unix pipe

我尝试使用管道传递带有空格的路径。但是,target命令期望引用输入路径。怎么做到呢 ?

这是我的尝试(只是强调问题的一个例子):

find /Applications/Google\ Chrome.app/ | xargs egrep -v goog 

egrep因白色空间而分割路径

egrep: /Applications/Google: No such file or directory
egrep: Chrome.app/: No such file or directory

任何想法如何解决这个问题?

1 个答案:

答案 0 :(得分:2)

来自xargs的手册页:

  

命令的命令行在到达系统之前建立 -   罚款限制(除非使用-n和-L选项)。指定的   命令将根据需要多次调用以使用该列表   输入项目。一般来说,调用的次数会少很多   命令比输入中的项目。这通常会有   显着的性能优势。一些命令可以有用地执行   并行提出;请参阅-P选项。

     

因为Unix文件名可以包含空格和换行符,所以这是默认值   行为往往是有问题的;包含空格和/或新文件的文件名   xargs错误地处理了这些行。在这些情况下   最好使用-0选项,以防止此类问题。使用时   这个选项你需要确保产生的程序   xargs的输入也使用空字符作为分隔符。如果说   例如,程序是GNU查找,-print0选项为您执行此操作。

尝试find /Applications/Google\ Chrome.app/ -print0 | xargs -0 egrep -v goog