linux find 使用
#删除当前目录下更改时间大于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 \; #批量改文件后缀名