1. 在当前目录下查找所有txt后缀文件
find ./ -name *.txt
2.在当前目录下的prune1目录及子目录下查找txt后缀文件
find ./ -path './prune1*' -name *.txt
(** 这个地方很奇怪啊)
find ./ -path './prune1' -name *.txt 的不到正确的结果啊,必须要加上星号
不知道有哪位高人告诉一下!! 先谢了
3.在当前目录下的dir0目录下的子目录dir00及其子目录下查找txt后缀文件
find ./ -path '*dir00*' -name *.txt
4.在除dir0及子目录以外的目录下查找txt后缀文件
find ./ -path './dir0*' -a -prune -o -name *.txt -print
说明:-a 应该是and的缩写,意思是逻辑运算符‘或’(&&); -o应该是or的缩写,意思是逻辑运算符‘与’(||), -not 表示非.
命令行的意思是:如果目录dir0存在(即-a左边为真),则求-prune的值,-prune 返回真,‘与’逻辑表达式为真(即-path './dir0*' -a -prune 为真),find命令将在除这个目录以外的目录下查找txt后缀文件并打印出来;如果目录dir0不存在(即-a左边为假),则不求值-prune ,‘与’逻辑表达式为假,则在当前目录下查找所有txt后缀文件。
5.在除dir0、dir1及子目录以外的目录下查找txt后缀文件
find ./ /( -path './dir0*' -o -path './dir1*' /) -a -prune -o -name *.txt -print
注意:圆括号()表示表达式的结合。即指示 shell 不对后面的字符作特殊解释,而留给 find 命令去解释其意义。由于命令行不能直接使用圆括号,所以需要用反斜杠'/'进行转意(即'/'转意字符使命令行认识圆括号)。同时注意'/(','/)'两边都需空格。
6.在dir0、dir1及子目录下查找txt后缀文件
find ./ /( -path './dir0*' -o -path './dir1*' /) -a -name *.txt -print
+1. 在所有以名为dir_general的目录下查找txt后缀文件
find ./ -path '*/dir_general/*' -name *.txt -print
--------------------------------------------------------------------
find \( -path "./prune1" -a -path "./prune2" -a -path "./prune" \) 只会打印存在的文件夹
这些表达式之间的关系是与(and), 所以当其中任何一个文件夹存在都会打印出来。
find ./ \( -path "./prune1" -o -path "./prune2" -o -path "./prune3" \) -prune -o -name "*.txt" -print
find ./ \( -path "./prune1" -o -path "./prune2" -o -path "./prune3" \) 成功执行,所以-prune等于true
-----------------------------------------------------------------------
与 Linux 中的许多命令不同,find 不需要 -r 或 -R 选项即可下到子目录中。它默认情况下就这样操作。但是,有时您可能希望限制这一行为。因此,选项 -depth、-maxdepth 和 -mindepth 以及操作 -prune 就派上用场了。
我们已经看到了 -prune 是多么有用,下面让我们来看看 -depth、-maxdepth 和 -mindepth 选项。
-maxdepth 和 -mindepth 选项允许您指定您希望 find 搜索深入到目录树的哪一级别。如果您希望 find 只在目录的一个级别中查找,您可以使用 maxdepth 选项。
通过运行以下命令在目录树的前三个级别中查找日志文件,您可以看到 -maxdepth 的效果。使用该选项较之不使用该选项所生成的输出要少得多。
find / -maxdepth 3 -name "*log"
您还可以让 find 在至少下至目录树三个级别的目录中查找:
find / -mindepth 3 -name "*log"
-depth 选项确保先在一个目录中进行查找,然后才在其子目录中进行查找。以下命令提供了一个示例:
find -name "*test*" -depth ./test/test ./test ./localbin/test ./localbin/test_shell_var ./localbin/test.txt ./test2/test/test ./test2/test ./test2