linux find命令用法 Linux中find命令的用法汇总( 二 )


$ 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
非常有用而且方便!
【linux find命令用法 Linux中find命令的用法汇总】7. 同时在多个目录下查找
如果你想要在两个不同的目录内进行查找,命令非常简单 。
$ find ./test ./dir2 -type f -name "abc*"
./test/abc.txt
./dir2/abcdefg.txt
检查一下,它确实列出了来自给定的两个目录的文件 。
8. 查找隐藏文件
在Linux系统中 , 隐藏文件的名字以英文的句号开头,即 .。所以要列出隐藏文件,只需加上简单的文件名过滤条件就行了 。
$ find ~ -type f -name ".*"
二、基于文件权限和属性的查找
9. 查找指定权限的文件
通过指定 perm 选项,我们可以查找具有特定权限的文件 。下面的示例中查找了所有具有 0664 权限的文件 。
$ find . -type f -perm 0664
./abc.txt
./subdir/how.php
./abc.php
./cool.php
我们可以用这个命令来查找带有错误权限的文件,这些文件可能会产生安全问题 。
可以结合 反向查找 来进行权限检查 。
$ find . -type f ! -perm 0777
./abc.txt
./subdir/how.php
./abc.php
./cool.php
10. 查找具有 SGID/SUID 属性的文件
下面的命令查找所有具有 644 权限和 SGID 属性的文件 。
# find / -perm 2644
我们同样可以使用 1664 来查找设置了 粘滞位 (sticky bit)的文件 。
# find / -perm 1644
perm 选项除了接受数值型参数外,同样接受 chmod 命令中的模式串 。在下面的查找中,我们用另一种语法来代替数字 。
$ find / -maxdepth 2 -perm /u=s 2>/dev/null
/bin/mount
/bin/su
/bin/ping6
/bin/fusermount
/bin/ping
/bin/umount
/sbin/mount.ecryptfs_private
注意:由于权限不足,某些目录会拒接访问 。命令中的 2>/dev/null 正是用于清除输出中的错误访问结果 。
11. 查找只读文件
$ find /etc -maxdepth 1 -perm /u=r
/etc
/etc/thunderbird
/etc/brltty
/etc/dkms
/etc/phpmyadmin
... output truncated ...
12. 查找可执行文件
$ find /bin -maxdepth 2 -perm /a=x
/bin
/bin/preseed_command
/bin/mount
/bin/zfgrep
/bin/tempfile
... output truncated ...
三、基于文件拥有者和用户组的查找
13. 查找属于特定用户的文件
查找当前目录下,属于 bob 的文件 。
$ find . -user bob
.
./abc.txt
./abc
./subdir
./subdir/how.php
./abc.php
在指定所属用户的同时,我们同样可以指定文件名 。
$ find . -user bob -name '*.php'
很容易看出,我们可以通过增加过滤条件来缩小查找文件的范围 。
14. 查找属于特定用户组的文件
# find /var/www -group developer
四、基于日期和时间的查找
除了上面介绍的查找条件外,另外一个非常棒的查找条件就是文件的修改和访问时间(日期) 。当我们想要找出哪些文件在某段时间内被修改的时候,这个查找条件将会非常方便 。我们来看几个例子 。
15. 查找过去的第 N 天被修改过的文件
# find / -mtime 50
16. 查找过去的 N 天内被访问过的文件
# find / -atime -50
17. 查找某段时间范围内被修改过内容的文件
# find / -mtime +50 -mtime -100
18. 查找过去的 N 分钟内状态发生改变的文件
$ find /home/bob -cmin -60
19. 查找过去的 1 小时内被修改过内容的文件
# find / -mmin -60
20. 查找过去的 1 小时内被访问过的文件
# find / -amin -60
五、基于文件大小的查找
21. 查找指定大小的文件
$ find / -size 50M
22. 查找大小在一定范围内的文件
$ find / -size +50M -size -100M
23. 查找最大和最小的文件
我们可以将 find 命令与 ls 和 sort命令结合 , 从而找出最大或最小的文件 。
下面的命令使用了 sort 命令的 -r 选项,也就是从大到小降序排列 。经过 head 命令的过滤之后,会显示当前目录和子目录下最大的5个文件 。命令的执行过程需要一段时间,查找的速度取决于文件的总数 。
$ find . -type f -exec ls -s {} ; | sort -n -r | head 5
同样,我们可以去掉 sort 命令的 -r 选项来进行升序排列,从而显示出最小的5个文件 。
$ find . -type f -exec ls -s {} ; | sort -n | head 5
24. 查找空文件和空目录
查找空文件:

推荐阅读