好记性不如烂笔头。
find是我们常用的命令,也是linux中一个非常帮的命令,find命令的基本使用如下
find pathname -options [-print -exec -ok command] {} \;
参数:
--print:将结果输出到标准输出
--exec:执行后面的command命令,注意 command {} \;之间的空格
--ok:用法通exec,只不过每次执行都带询问,相对安全,但是需要find结果多的时候每次询问会比较烦
选项:
-name filename #查找名字为filename的文件
-perm mode #按权限为mode(如777)查找
-user username #按属主查询
-group groupname #按组名查询
-mtime -n/+n #按文件内容修改时间查询,-n表示n天以内,+n表示n天以外
-atime -n/+n #按访问时间查询
-ctime -n/+n #按文件元数据(如权限或所有权)被改变时间访问
-nogroup #查无有效属组的文件,即所在组在/etc/groups中不存在
-nouser #查无有效属主的文件,及用户在/ect/passwd中不存在
-newer file1 !file2 #查找比file1文件新但是比file2文件旧的文件
-type typename #查找某类型文件:b-块设备文件,d-目录,c-字符设备文件,p-管道文件,l-符号链接文件,f-普通类型文件
-size n[c] #按大小查询文件,查询长度为n块的文件,[c]可以是b、c(字节)、w(2字节)、k、M、G,如find . -type f -size 2k,找2k的普通文件
-depth #是查找在进入子目录前先遍历完本目录,使用这个options会改变输出顺序
-prune #忽略某个目录
-iname #忽略名字大小写
-maxdepth #查找的最大深度
-mindepth #查找的最小深度
maxdepth、mindepth不应出现在find命令的第4个及以后参数位置,会影响find的效率
#find出10天前修改的txt文件,复制到OLD目录
find . -type f -name "*.txt" -exec cp {} OLD \;
-exec结合多个命令:我们无法在-exec后面跟多个命令,但是我们可以将命令都放到command.sh中,然后
-exec ./command.sh {} \;