Linux命令行批量刪除文件(目錄)


快速-批量刪除文件或目錄

 1-1.快速刪除大文件夾(注意目錄后的結束符‘/’)(對於含有海量文件的目錄,不能直接rm -rf刪除,這樣效率很慢:)

          rsync ---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結尾的目錄全路徑,一個個給到$ID
do
  for i in `ls $ID/*\.[eo]*`  #匹配filename.e.12345   filename.o.12345  文件
  do
  #echo $i
  rm $i
  done
  for i in `ls $ID/*\.log`   #匹配filename.log 文件
  do
  #echo $i
  rm $i
  done
done

 

 

參考:

[0]http://www.jb51.net/article/61943.htm  

[1]https://blog.csdn.net/ydyang1126/article/details/72841308    https://blog.csdn.net/shangzwz/article/details/10304469


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM