Linux命令行批量删除目录

快速-批量删除文件或目录

 1-1.快速删除大文件夹(注意目录后的结束符‘/’)(对于含有海量文件的目录,不能直接rm -rf删除,这样效率很慢:)

          rsync -a --delete blank/ test/              使用空文件夹 blank/ 覆盖原文件夹 test/ 

          mkdir empty_dir && rsync -a --delete empty_dir/ your_dir/ && rm -rf your_dir/ empty_dir  #得把your_dir/再删除一下,因为里边的./文件很大 

 1-2.查找并删除文件

find ./ -type f -name "*.log" -mmin +120 -delete 删除当前目录下120min前的所有.log结尾文件

find ./ -type f -name "*.log"-mtime +300 -delete 删除当前目录下300天前的所有.log结尾文件

这种方式要比下边语句快2-3倍,并且当目录中文件非常多时不会出现列表过长无法删除的异常。

find ./ -name "*.log" -mmin +120 | xargs rm -f

find ./ -name "*.log" -mmin +120 -exec rm {} -f # -exec 表示后面执行命令 "{}"  -f表示不需要确认 <=>

find ./ -name "*.log" -mmin +120 -exec rm -f "{}" \; #最后的分号不可少

 1-3.

delete.sh:

for i in `ls -d path/shell/shell_pipe/step*qsub`   # ls列出匹配上的目录  必须用-d 否则ls会把目录下的文件也都列出来
do
rm -r $i
done

for i in `ls path/*log`
do
rm $i
done

eg:快速删除目标文件中自己的qsub目录中的运行oe文件。

/share/app/msort/bin/msort -k rn5  file | grep 'name'|grep 'qsub'|awk '{print 8}'| while read ID    #第八列是以qsub结尾的目录全路径,一个个给到8}'| while read ID    #第八列是以qsub结尾的目录全路径,一个个给到ID
do
  for i in `ls ID/*\.[eo]*`  #匹配filename.e.12345   filename.o.12345  文件   do   #echoID/*\.[eo]*`  #匹配filename.e.12345   filename.o.12345  文件   do   #echoi
  rm i  done  foriin‘lsi  done  foriin‘lsID/*\.log`   #匹配filename.log 文件
  do
  #echo i  rmi  rmi
  done
done

猜你喜欢

转载自blog.csdn.net/weixin_37989267/article/details/111873579
今日推荐