Linux--find
Posted dreamshe92
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了Linux--find相关的知识,希望对你有一定的参考价值。
find的基本语法如下:
$ find [path] [option] [expression]
一、基本用法
1.列出当前目录和子目录下的所有文件
这个命令会列出当前目录以及子目录下的所有文件。
$ find .
.
./tmp
./tmp/a
./tmp/a/4.log
./tmp/a/2.log
./tmp/a/5.log
./tmp/a/1.log
./tmp/a/3.log
2. 查找特殊的目录或路径
下面的命令会查找当前目录下 test 文件夹中的文件,默认列出所有文件。
$ find ./test ./test ./test/abc.txt ./test/subdir ./test/subdir/how.php ./test/cool.php
3. 查找特定文件名称
$ find . -name "1.log"
./tmp/a/1.log
#通配符
$ find . -name "*.log"
./tmp/a/4.log
./tmp/a/2.log
./tmp/a/5.log
./tmp/a/1.log
./tmp/a/3.log
#忽略大小写
$ find . -iname "*.LOG"
./tmp/a/4.log
./tmp/a/2.log
./tmp/a/5.log
./tmp/a/1.log
./tmp/a/3.log
4、限制目录查找的深度
$ find ./test -maxdepth 2 -name "*.php" ./test/subdir/how.php ./test/cool.php $ find ./test -maxdepth 1 -name *.php ./test/cool.php
5. 只查找文件或目录
$ find ./test -name abc* ./test/abc.txt ./test/abc #文件 $ find ./test -type f -name "abc*" ./test/abc.txt #目录 $ find ./test -type d -name "abc*" ./test/abc
6、结合命令输出
-exec command ;| 注意有个分号";"结尾,该action是用于执行给定的命令。如果命令的返回状态码为0则该action返回true。
| command后面的所有内容都被当作command的参数,直到分号";"为止,其中参数部分使用字符串""时,它
| 表示find找到的文件名,即在执行命令时,""会被逐一替换为find到的文件名,""可以出现在参数中的
| 任何位置,只要出现,它都会被文件名替换。
| 注意,分号";"需要转义,即"\;",如有需要,可以将""用引号包围起来
$ find . -type f -exec ls -s \; | sort -n 0 ./tmp/a/1.log 0 ./tmp/a/2.log 0 ./tmp/a/3.log 0 ./tmp/a/4.log 0 ./tmp/a/5.log
$ find . -exec ls -ld \;
drwxrwxr-x. 3 hyb92 hyb92 4096 Jun 11 21:24 .
drwxrwxr-x. 3 hyb92 hyb92 4096 Jun 11 21:24 ./tmp
drwxrwxr-x. 2 hyb92 hyb92 4096 Jun 11 21:25 ./tmp/a
-rw-rw-r--. 1 hyb92 hyb92 0 Jun 11 21:25 ./tmp/a/4.log
-rw-rw-r--. 1 hyb92 hyb92 0 Jun 11 21:25 ./tmp/a/2.log
-rw-rw-r--. 1 hyb92 hyb92 0 Jun 11 21:25 ./tmp/a/5.log
-rw-rw-r--. 1 hyb92 hyb92 0 Jun 11 21:25 ./tmp/a/1.log
-rw-rw-r--. 1 hyb92 hyb92 0 Jun 11 21:25 ./tmp/a/3.log
$ find /tmp -type f -name "*.txt" -exec rm -f \;
$ find /tmp -type d -name "dirToRemove" -exec rm -r -f \;
【时间戳类条件】
-anewer file:atime比mtime更接近现在的文件。也就是说,文件修改过之后被访问过 -cnewer file:ctime比mtime更接近现在的文件 -newer file:比给定文件的mtime更接近现在的文件。 -newer[acm]t TIME:atime/ctime/mtime比时间戳TIME更新的文件 -amin n:文件的atime在范围n分钟内改变过。注意,n可以是(+ -)n,例如-amin +3表示在3分钟以前 -cmin n:文件的ctime在范围n分钟内改变过 -mmin n:文件的mtime在范围n分钟内改变过 -atime n:文件的atime在范围24*n小时内改变过 -ctime n:文件的ctime在范围24*n小时内改变过 -mtime n:文件的mtime在范围24*n小时内改变过 -used n:最近一次ctime改变n天范围内,atime改变过的文件,即atime比ctime晚n天的文件,可以是(+ -)n
以上是关于Linux--find的主要内容,如果未能解决你的问题,请参考以下文章
linux find命令查找当前目录下7天前的文件但排除所有目录