Dav*_*vis 58 bash find file-extension filenames
什么是正确的语法:
find . -type f -name \*.\(shtml\|css\)
Run Code Online (Sandbox Code Playgroud)
这有效,但不优雅:
find . -type f -name \*.shtml > f.txt && find . -type f -name \*.css >> f.txt
Run Code Online (Sandbox Code Playgroud)
如何做同样的事情,但击键次数更少?
Ben*_*ier 81
您可以将不同的搜索表达式与逻辑运算符-or
or 结合使用-and
,因此您的案例可以写为
find . -type f \( -name "*.shtml" -or -name "*.css" \)
Run Code Online (Sandbox Code Playgroud)
这也表明您在使用引号时不需要转义特殊的 shell 字符。
编辑
正如 Chris 所建议-or
的那样-and
,Since 的优先级低于隐含在-type
和第一个-name
放入括号中的名称部分。
Den*_*son 17
这是制作第一个版本的一种方法:
find -type f -regex ".*/.*\.\(shtml\|css\)"
Run Code Online (Sandbox Code Playgroud)
Ted*_*ddy 15
您需要括号以仅包含文件:
find . -type f \( -name "*.shtml" -o -name "*.css" \) -print
Run Code Online (Sandbox Code Playgroud)
奖励:这是符合 POSIX 的语法。
归档时间: |
|
查看次数: |
50919 次 |
最近记录: |