40d*_*ves 2 bash sh bash-scripting
如何在目录中递归地找到所有带有大写扩展名的文件。
我试过了 :
$ find -name "*.[A-Z][A-Z][A-Z]"
Run Code Online (Sandbox Code Playgroud)
似乎有效,但当然这不会检查最后一个点后超过 3 个字母的文件。
以下适用于简单情况:
find -name "*.*[A-Z]*" ! -name "*.*[^A-Z]*"
Run Code Online (Sandbox Code Playgroud)
对于名称中包含两个或更多点的文件,它可能会失败。对于这种情况,您需要使用正则表达式,例如grep:
find | grep '\.[A-Z][A-Z]*$'
Run Code Online (Sandbox Code Playgroud)
或egrep:
find | egrep '\.[A-Z]+$'
Run Code Online (Sandbox Code Playgroud)
按照 Kamil Maciorowski 的评论,可以通过使用[:upper:]代替来使答案与区域设置无关A-Z,如下所示:
find | egrep '\.[[:upper:]]+$'
Run Code Online (Sandbox Code Playgroud)
恐怕我们以英语为母语的人很容易忘记这些事情。
| 归档时间: |
|
| 查看次数: |
621 次 |
| 最近记录: |