find命令可以用于查找特定的文件和目录。
一、基础用法
find /home/$USER
会列出用户主目录下的所有文件和目录
find /home/$USER -print
print选项是打印的意思,默认换行打印
find /home/$USER -print0
使用print0会将换行符改为空字符进行输出
二、其他选项
name选项
find /home/$USER -name "*.txt" -print
name选项指定要查找的文件的名称,可以使用具体的名称,
也可以使用正则表达式。
上面的命令会查找用户目录下的所有以.txt结尾的文件。
如果想找到所有以.txt结尾的文件和以.sh结尾的文件,
可以这样写
find /home/$USER \( -name "*.txt" -o -name "*.sh" \)
path选项
find /home/$USER -path "*/hello/*"
path选项会指定要查找的路径
regex选项
使用regex选项来使用正则表达式进行匹配
find /home/$USER -regex ".*\(\.sh\|\.txt\)"
该操作也会找出用户目录下的所有以.sh和.txt结尾的文件,
这里使用的是BRE(基本正则表达式),所以对()|以及.都使用了转义。
!取反操作
find /home/$USER ! -name "*.txt"
该操作会找到除了以.txt结尾的所有文件
mindepth 和maxdepth
使用这两个选项可以指定find搜索的目录深度
mindepth是最小深度,maxdepth为最大深度
find /home/$USER -mindepth 2 -maxdepth 2
该操作指定find只在/home/$USER的二级目录中查找文件和目录
type过滤类型
find /home/$USER -type f
该操作会在/home/$USER 中查找类型为普通文件的文件
类似操作还有
find /home/$USER -type d
查找目录
find /home/$USER -type l
查找链接文件
-atime(访问时间) -mtime(修改时间) -ctime(变化时间)
以天为单位
find /home/$USER -atime +7
查找7天内访问过的文件
find /home/$USER -atime -7
查找7天前访问过的文件
find /home/$USER -atime 7
查找7天前访问的文件
-amin -mmin -cmin
同上,但以分钟为单位
-size
find /home/$USER -size +2k
find /home/$USER -size 2k
find /home/$USER -size -2k
查找大于等于小于2k的文件
除了kb,还有M G等单位大小
delete删除匹配文件
find /home/$USER -size +2k -delete
删除目录下大于2kb的文件
perm文件权限匹配
find /home/$USER -perm 755
查找文件权限为755的文件
user指定文件所有者
find /home/$USER -user root
查找root用户的所有文件
exec执行选项
find /home/$USER -name "*.c" -exec cat {} \;> all.txt
该命令会将所有.c文件输入到all.txt文件中
{}会代指每个找到的.c文件
prune跳过
find /home/$USER \(-name "*.git" -prune\) -o \(-type f -print\)
该操作会跳过*.git输出所有类型为普通文件的文件