批量删除linux的文件;find方法批量删除文件;find查找某时间段内的所有文件
1.如图所示,有大量文件夹,想批量删除它们
2. 使用命令 find . -maxdepth 1 -regex “.ws.” 可以批量找到他们。maxdepth值为1表示只在当前目录查找,不递归查找其子目录
3、使用命令 find . -maxdepth 1 -regex “.ws.” -exec rm -rf {} ; 批量删除它们,这个世界瞬间清爽了很多
ps注意后面的分号,不要省略啊
4、使用命令 find . -maxdepth 1 -regex “.ws.” | xargs rm -rf 同样可以批量删除
xargs是把前面的输出作为后面的参数,如果多行输出,就多次执行后面的命令
5、有的linux系统支持的regex正则表达式不一样,可以使用下面的方式替换
find . -maxdepth 1 -name “ws” | xargs rm -rf
6、find使用正则:
find . -regex “.*.(txt|sh)”
加参数“-regextype type”可以指定“type”类型的正则语法,find支持的正则语法有:valid types are findutils-default',
awk’, egrep',
ed’, emacs',
gnu-awk’, grep',
posix-awk’, posix-basic',
posix-egrep’, posix-extended',
posix-minimal-basic’, `sed’.
显示20分钟前的文件
find /home/prestat/bills/test -type f -mmin +20 -exec ls -l {} ;
find /home/prestat/bills/test -type f -mmin +20 -exec ls -l {} +
删除20分钟前的文件
find /home/prestat/bills/test -type f -mmin +20 -exec rm {} ;
显示20天前的目录
find /home/prestat/bills/test -type d -mtime +20 -exec ls -l {} ;
删除20天前的目录
find /home/prestat/bills/test -type d -mtime +20 -exec rm {} ;
在20-50天内修改过的文件
find ./ -mtime +20 -a -mtime -50 -type f
排除某些目录:
find ${JENKINS_HOME}/jobs -maxdepth 1 -name “*” -mtime +60 ! -path /var/lib/jenkins/jobs | xargs ls -ld;
排除某些文件:
find ${JENKINS_HOME}/jobs -maxdepth 1 ! -name “*.xml” -mtime +60 ! -path /var/lib/jenkins/jobs | xargs ls -ld;
理解下两种写法的区别:对结果没有影响;{}表示find找到的列表
find . -exec grep chrome {} \;
or
find . -exec grep chrome {} +
find will execute grep and will substitute {} with the filename(s) found. The difference between ; and + is that with ; a single grep command for each file is executed whereas with + as many files as possible are given as parameters to grep at once.
find . -type f | while read f;
do
echo $f;
# do something
done
另外,可以使用-ok替换-exec操作:-ok相比-exec多了提示的功能,每一步都需要用户确认,这样对于rm操作,更加安全
举例:找出内容为空的文件删除