我尝试使用管道传递带有空格的路径。但是,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
任何想法如何解决这个问题?
答案 0 :(得分:2)
来自xargs的手册页:
命令的命令行在到达系统之前建立 - 罚款限制(除非使用-n和-L选项)。指定的 命令将根据需要多次调用以使用该列表 输入项目。一般来说,调用的次数会少很多 命令比输入中的项目。这通常会有 显着的性能优势。一些命令可以有用地执行 并行提出;请参阅-P选项。
因为Unix文件名可以包含空格和换行符,所以这是默认值 行为往往是有问题的;包含空格和/或新文件的文件名 xargs错误地处理了这些行。在这些情况下 最好使用-0选项,以防止此类问题。使用时 这个选项你需要确保产生的程序 xargs的输入也使用空字符作为分隔符。如果说 例如,程序是GNU查找,-print0选项为您执行此操作。
尝试find /Applications/Google\ Chrome.app/ -print0 | xargs -0 egrep -v goog
。