文章目录
find 排除某些类型文件查找
在 Linux 中,你可以使用 find
命令的 !
(非)操作符和 -name
选项结合通配符来查找除了特定类型以外的所有文件。下面是一个命令示例,它将查找当前目录及子目录下除了 .py
和 .sh
类型的所有文件:
find . -type f ! \( -name "*.py" -o -name "*.sh" \)
这条 find
命令的组成如下:
.
:表示在当前目录及其子目录下查找。-type f
:表示只查找文件(排除目录、链接等)。!
:表示对后面的表达式取反,也就是查找不匹配的文件。\(
和\)
:用于将-name "*.py"
和-name "*.sh"
组合成一个表达式。必须对它们进行转义(通过在前面加上反斜杠\
),因为它们在 shell 中有特殊的含义。-name "*.py"
:表示查找所有扩展名为.py
的文件。-o
:表示逻辑 OR,用于在-name "*.py"
和-name "*.sh"
之间进行逻辑或操作。-name "*.sh"
:表示查找所有扩展名为.sh
的文件。
find
命令的输出将是当前目录及子目录下不是.py
和.sh
文件的所有文件列表。
如果你想让查找过程只限制在当前目录,不递归到子目录,可以添加-maxdepth 1
选项:
find . -maxdepth 1 -type f ! \( -name "*.py" -o -name "*.sh" \)
这样,find
将只在当前目录中进行查找,不会查找任何子目录。