linux find 使用

Astray 2014-05-05

#删除当前目录下更改时间大于5天的文件

find ./ -mtime +5|xargs rm

# 删除3天内修改的文件

find ./ -mmin -4320 

# 删除修改时间大于3天的文件

find ./ -mtime +3 | xargs rm  

-exec  参数后面跟的是command命令,它的终止是以;为结束标志的,所以这句命令后面的分号是不可缺少的,考虑到各个系统中分号会有不同的意义,所以前面加反斜杠。

exec选项后面跟随着所要执行的命令或脚本,然后是一对儿{},一个空格和一个\ 最后是一个分号。

# 删除./目录下近一个星期没有被访问的文件

find ./ -atime +7  -print -exec rm  -f  {}  \; 

#1.查询所有包含字符串“Hello”的文件

find ./ -exec grep "Hello" {} \;

#2.删除所有临时文件

find ./ -name "*.tmp" -exec rm -f {} \;

#3 删除20天以前的文件

find ./ -name "*" -ctime +20 -exec rm -f {} \;   注:+20 表示20天以前

# 在目录中查找更改时间在n日以前的文件并删除它们,在删除之前先给出提示 (ok安全模式)

find . -name "*.log" -mtime +5 -ok rm {} \;

#比如删除时间界于A文件和B文件(不包括A、B文件) 

find -name  "*" -newer A  ! -newer  B  -exec  rm  -f  {}  \; 

#如果想同时删除A和B文件则可以用-o   连接条件 

find -name  "* " -o  -name "A "  -o  -name  "B " -newer A  ! -newer  B  -exec  rm  -f  {}  \; 

####################### success

find ./ -name '*abc*'

find ./ -name '*.java' -print  # 所有的java文件

find ./ -name 'z*.py' -print   # 以z开头的py文件

find ./ -name 'NJReport*' | grep -v NJReport.jar

# find复杂组合 -exec 是原始写法

find ./ *.jar -print | xargs -i mv -f {} ./mvbak/

find ./ -type f -print | xargs -i mv -f {} ./newdir 

find ./ -mtime +1 -exec mv {} /home/think/njr/bak/mvbak/ \;

# 配合 mv

find ./ -name '*-11-*' -exec mv {} ./log_bak/ \;  # 移动文件名中包含-11- 的文件到上级目录下

find ./ -name "*.log" -exec mv {} ./log_bak/ \;

find ./ -name '*-11-*' -exec mv {} ./log_bak/ \;

find ./ -name '*-11-*' -print | xargs -i mv {} ./log_bak/

find ./ -name \*.java | xargs tar -czf java.tar.gz # 打包当前文件夹下的java文件

tar -tzf java.tar.gz    #查看文件内容

# 过滤指定文件夹 文件夹跟在path 后面

find ./ -path '*log_bak*' -a -prune -o -print 

find ./ -path '*mvbak*'  -a -prune -o -name '*abc*' -print | xargs -i mv {} /home/think/njr/bak/mvbak/ # 排除目录下的指定文件夹 mvbak

find ./ -path '*filebak*' -a -prune -o -name '*_strategy_*' -print | xargs -i mv {} /vol/hamobsi/DQ_SYNC/filebak

find ./ -name '*-11-*' -exec mv {} {}.bak \;  #批量改文件后缀名

相关推荐