find -print0 -name“* *”(空白)

问题描述:

有没有办法将包含空白的所有文件名传递给管道,或者至少包含空格的文件?为此,我试图:find -print0 -name“* *”(空白)

~/Desktop> find . -type f -mindepth 1 -maxdepth 1 -name "* *" | wc -c 
     0 
~/Desktop> find . -type f -mindepth 1 -maxdepth 1 -print0 -name "* *" | wc -c 
    247 
~/Desktop> 

如您所见,没有-print0的命令在当前目录中准确地找不到包含空格的文件。但是-print0加上后,-name选项显然没有按照我的预期解释。

-name "* *" 

更妙的是某种方式来指定任何空白,而不仅仅是空间。理想情况下,这可以在查找中完成,而不是采用perl正则表达式进行“下游”处理。 最终,我想将文件名传递给一个脚本,该脚本将用我指定的某个字符替换空格。

订单事宜。因为-print行动而来的-name过滤器之前这将打印的每一个名字:

find . -print -name "foo" 

这将只打印那些名为foo,因为动作来过滤后:

find . -name "foo" -print 
+0

有没有一种办法指定包含“病态”空白的文件名,例如制表符和返回值,例如由“touch foo $'\ r'bar” –

+0

'-name'* [[:space:]] *''创建的文件 –