快速-批量刪除文件或目錄
1-1.快速刪除大文件夾(注意目錄后的結束符‘/’)(對於含有海量文件的目錄,不能直接rm -rf刪除,這樣效率很慢:)
rsync -a --delete blank/ test/ 使用空文件夾 blank/ 覆蓋原文件夾 test/
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