find命令实例

2015-05-19

find命令是linux常用命令之一。

1、查看文件夹中各个文件的大小
find . -type f -exec du -sh {} \;
2、查询所有包含字符串“Hello”的文件
find / -exec grep "Hello" {} \;
3.删除所有临时文件
find / -name "*.tmp" -exec rm -f {} \;
4、查找到的文件的详细信息和属性,
find / -name "httpd.conf" -ls
5、find选项 用途描述
-exec command; 查找并执行命令
-fprint file 打印文件完整文件名
-fprint0 file 打印文件完整文件名包括空的文件
-fprintf file format 打印文件格式
-ok command; 给用户命令执行操作,根据用户的Y 确认输入执行
-printf format 打印文件格式
-ls 打印同种文件格式的文件.
6、使用混合查找方式:
find /tmp -size +10000000c -and -mtime +2 // -and
find . -size +200M -exec /bin/cp /dev/null {} \;
find . -size +200000000c -exec truncate --size 0 {} \;
find / -user fred -or -user george // -or 在/tmp目录中查找属于fred或者george这两
单个用户的文件
find /tmp ! -user panda // -or 在/tmp目录中查找所有不属于panda的文件

7、 选项 用途描述
-daystart . .测试系统从今天开始24小时以内的文件,用法类似-amin
-depth 使用深度级别的查找过程方式,在某层指定目录中优先查找文件内容
-follow 遵循通配符链接方式查找; 另外,也可忽略通配符链接方式查询

-maxdepth levels 在某个层次的目录中按照递减方法查找
-mount 不在文件系统目录中查找, 用法类似 -xdev.
-noleaf 禁止在非UNUX文件系统,MS-DOS系统,CD-ROM文件系统中进行最优化查找

-help 显示命令摘要
-version 打印版本数字

8、 通过文件的特征查找:
1) 按文件名
find / -name httpd.conf
find /usr -name httpd.conf
find /etc -name '*srm*'

2) 按大小
find / -size 1500c # 查找文件大小为1,500 bytes的文件,字符 c 表明这个要查找的文件的大小

是以bytes为单位。
find/ -size +10000000c # "+”是表示要求系统只列出大于指定大小的文件, "-”表示小于
find / -empty # 查找在系统中为空的文件或者文件夹

3) 按时间
find / -amin -10 # 查找在系统中最后10分钟访问的文件
find / -atime -2 # 查找在系统中最后48小时访问的文件

find / -mmin -5 # 查找在系统中最后5分钟里修改过的文件
find / -mtime -1 # 查找在系统中最后24小时里修改过的文件

find / -cmin -5 # 查找在系统中最后5分钟里被改变状态的文件
find / -ctime -1 # 查找在系统中最后24小时里被改变状态的文件

4) 按用户
find / -user fred # 查找在系统中属于FRED这个用户的文件
find / -group cat # 查找在系统中属于 groupcat的文件
find / -nouser # 查找在系统中属于作废用户的文件

5) 其他
-false 查找系统中总是错误的文件
-fstype type 查找系统中存在于指定文件系统的文件,例如:ext2 .
-gid n 查找系统中文件数字组 ID 为 n的文件
-group gname 查找系统中文件属于gnam文件组,并且指定组和ID的文件

9、find+sed替换
find . |xargs sed -i 's#beta#beta_best#g'
find . -exec grep beta '{}' \; -exec sed -i s/beta/beta_best/g '{}' \;
find . -type f |xargs sed -i 's#beta#beta_best#g'
find . -name "*.txt" |xargs sed -i 's@beta/beta_best@g'
find . -name "*.txt" -exec sed -i 's@beta@beta_best@g' {} \;

10、other是---则不用列出

-perm /mode
Any of the permission bits mode are set for the file.
find /usr -type f -perm /007 -exec ls -l {} \;

11、find+grep

find ./ -exec grep cn '{}' \; -exec sed -i s/.cn/.com/g '{}' \;
find . -type d -exec grep love {} \;
find . -type f -exec grep love {} \;
find ./ -type f | xargs sed 's/商品/产品/g'

12、find minute

find . -amin -100
-cmin n
File’s status was last changed n minutes ago.

-amin n
File was last accessed n minutes ago.

-mtime n
File’s data was last modified n*24 hours ago.

-atime n
File was last accessed n*24 hours ago.

13、find . -mtime +30 -exec mv {} backup/ \;

rm- ls|xargs -i rm -rf {}
rename- ls|xargs -i mv {} {}.old

find . -type f -exec mv {} {}.old \;

批量替换@为_

#!/bin/bash
for file in `find /test -type f`;do
newfile=`echo $file|sed 's/@/_/g'`;
/bin/mv $file $newfile;
done

14、find . -name * -exec rm -f {} \;

find . -mtime +30 -exec rm -f {} \; 30天前的
find . -mtime -30 -exec rm -f {} \; 30天内的

删除文件大小为零的文件(bjchenxu)
rm -i `find ./ -size 0`
find ./ -size 0 -exec rm {} \;

find ./ -size 0 | xargs rm -f &

for file in * #自己定义需要删除的文件类型
do
if [ ! -s ${file} ]
then
rm ${file}

echo "rm $file Success!"
fi
done

15、查找30天前的文件,并删除
find . -mtime +30 -exec rm -rf {} \;
find . -mtime +30 -exec mv {} backup/ \;
find . -maxdepth 1 -type f -exec mv {} bak \;

16、当前路径包含bash字符串的文件并ls
find . -type f -exec grep "bash" {} \; -exec ls -l {} \;

17、通配符
文件名通配的元字符有哪些:
*:匹配任意长度任意字符
?:匹配任意单个字符
[]:匹配指定范围内的任意单个字符 比如[abc]、[a-z] 字母范围不区分大小写
[0-9a-z]:该范围表示所有数字和字母
[^0-9a-z]:该范围表示除所有数字和字母之外的单个字符
[:space:]:所有空白字符
[[:space:]]:最外面的[]表示任意单个字符,里面的[]代表空白字符
[[:punct:]]:所有的标点符号当中的任意一个
[[:lower:]]:所有的小写字母当中的任意一个
[[:upper:]]:所有的大写字母当中的任意一个
[^[:upper:]]:所有非大写字母当中的任意一个
[[:digit:]]=[0-9]
[[:alnum:]]:所有的字母+数字当中的任意一个
[[:alpha:]]:所有字母字符当中的任意一个

find . -maxdepth 1 -type f -name "*[[:upper:]]*" -exec mv {} backup/ \;
find . -maxdepth 1 -type f -name "*[[:lower:]]*" -exec mv {} backup/ \;
find . -maxdepth 1 -type f -name "*[[:punct:]]*" -exec mv {} backup/ \;

分类:Linux | 标签: |

相关日志

评论被关闭!