我想查找给定根中包含文件名中任意扩展名的文件。 我看到这个帖子: How to delete all files with certain suffix before file extension使用find命令查找特定的文件扩展名
根据掌握的信息,我想这一点:
find . -iregex ".*\.\(wav\|aif\|wave\|aiff\)"
这似乎是它应该工作,但我没有得到任何结果打印到终端窗口。
任何人都可以提供建议吗?我在OSX 10.7
感谢, JML
我想查找给定根中包含文件名中任意扩展名的文件。 我看到这个帖子: How to delete all files with certain suffix before file extension使用find命令查找特定的文件扩展名
根据掌握的信息,我想这一点:
find . -iregex ".*\.\(wav\|aif\|wave\|aiff\)"
这似乎是它应该工作,但我没有得到任何结果打印到终端窗口。
任何人都可以提供建议吗?我在OSX 10.7
感谢, JML
您正在寻找:
find . -regex ".*\.\(wav\|aif\|wave\|aiff\)"
你失踪逃逸,\
,人物上,或者|
,运营商
是,一个emacs
风格的正则表达式?如果不是,请尝试使用-regextype
。在Linux(过时)的find
手册页:
-regextype type
更改由后来出现在命令行上-regex
和-iregex
测试理解正则表达式语法。目前实施的类型是emacs
(这是默认设置),posix-awk
,posix-basic
,posix-egrep
和posix-extended
。
在MacOS X,该手册页find
说:
-iregex pattern
像
-regex
,但比赛是不区分大小写。
-regex pattern
如果该文件的完整路径使用正则表达式匹配模式真。要匹配名为'
./foo/xyzzy
'的文件,可以使用正则表达式'.*/[xyz]*
'或'.*/foo/.*
',但不能使用'xyzzy
'或'/foo/
'。
一些实验表明:
find pdf -iregex ".*/.*.pdf"
发现一大堆的PDF文件,我的文件夹中充斥其中的,但这些变异的发现了什么:
find pdf -iregex ".*/.*\.(pdf|doc|docx)"
find pdf -iregex ".*/.*\.\(pdf|doc|docx\)"
find pdf -iregex ".*/.*.(pdf|doc|docx)"
find pdf -iregex ".*/.*.\(pdf|doc|docx\)"
因此,一个被迫假定MacOS X(BSD)find
支持的正则表达式在识别的字符中不包括替换(括号和管道)。 '可惜:man 7 re_format
暗示可能,但事实并非如此。看起来,Mac OS X(BSD)不支持-regextype
选项。
因此,安装GNU find
或对N个不同文件扩展名执行N次单独搜索可能是最简单的,或者一般搜索一个文件并使用egrep '\.(aff|wave?|aiff)$'
来捕获您感兴趣的文件。而是假定你不要在文件名中使用换行符(空格等都可以,但换行符不行)。
apologies-其实我试过你的建议。我修改了我的问题。 – jml 2012-01-17 07:57:23
非正则表达式'find'命令是否输出到控制台?你可以尝试像下面这样将正则表达式的责任传递给另一个实用程序: 'find。 | grep -e“。* \。\(wav \ | aif \)”' – ajshower 2012-01-17 14:18:44
这是完美的。谢谢......我如何将它传递给实用程序来删除它们? – jml 2012-01-17 22:58:08