find命令是根据表达式在指定的目录中查找符合条件的文件
用法:
find [path] [options]
options:
-name pattern 根据名字去查找文件,可以使用通配符(shell中的通配符)(也可以使用正则表达式)
* 代表0个或者任意多个字符(shell中的规则)
? 代表一个任意的字符(shell中的规则)
如:
find ./ -name '*.c'
在当前目录(以及目录下面的目录)查找名字以.c结束的文件
使用find命令时,只要使用了“*”号,一定要加上单引号或者双引号
find ./ -name '[123].c'
在当前目录(以及目录下面的目录)查找名字以1.c/2.c/3.c的文件
-type b|c|d|p|l|s|f 根据文件的类型去查找文件
b:block 块设备文件(存储设备)
c:char 字符设备文件
d:directory 目录文件
p:pipe 管道文件
l: link 链接文件
s:socket 套接字文件
f:regular file 普通文件
find ./ -name "*.c" -type l
在当前目录(以及目录下面的目录),查找名字以.c结束的连接文件
根据大小查找文件
-size n[c|w|b|K|M|G]
-size 5
c:单位是字节
w:word 字,两个字节就是一个字
b:块 1b == 512 字节
k: 1k == 1024 字节
find /home -size +512k 查大于512k的文件
find /home -size -512k 查小于512k的文件
根据权限查找文件
-perm mode 根据文件的权限查找
mode 要求所有的权限位都要匹配
如:
-perm 0664
待查找的文件的权限必须是0664
find ./Test/ -perm 0664
/mode 只要有一个权限位匹配即可
如:
-perm /0111
--x--x--x
待查找的文件权限只要有一个可执行权限即可匹配
-newer file
查找比文件file更加新的文件(修改时间再file的后面)
待查找的文件的修改时间在file的修改时间的后面
find ./ -newer ./Test/1.c
-delete
删除找到的文件
-exec command {} \;
每找到一个文件,就执行一次command命令
如:
find . -name *.c -exec ls -l {} \;
每找到一个文件就执行一次ls -l的命令
{} 代表找到的文件的文件名
-exec command {} +;
所有的文件查找完毕之后,再去执行command命令
{} + 代表所有找到的文件名列表(以空格隔开)
如:
使用find命令,把前面所有写的C文件和头文件打一个包
找到所有的C文件和头文件
find /mnt/hgfs/CS2406F/ -regex ".+\\.[ch]"
find /mnt/hgfs/CS2406F/ -regex ".+\\.[ch]" -exec tar -zcvf C_src.tar.gz {} +;
本文详细介绍了find命令的用法,包括按名称、类型、大小和权限查找文件,以及使用通配符、正则表达式和执行自定义命令的功能。
952

被折叠的 条评论
为什么被折叠?



