的一首歌時會產生多個檔案存放在系統裡,開始的思路是想通過把系統裡的所有***及wma檔案放在同乙個
目錄乙個然後再在這個目錄裡判斷檔案大小,如果檔案大小相同則刪除多餘的檔案,但最後發覺這根本就
的是使用find命令實現。即最後一條命令刪除目錄下以|數字和.***|結尾的檔案,因為發覺同一首的在同
乙個目錄下會生成這樣的檔案。
#!/bin/bash
echo "please put the source music dirctory "
read source #讀取源目錄,我這裡是全盤搜尋
echo "please put the destination dirctory"
read destination#讀取目的目錄,這個目錄必須為空,即自己在系統中新建乙個目錄,不然可能會刪除
到了你不想要刪除的檔案
find $source -name "*.[mm][pp]3" -type f -exec mv {} $destination \;
find $source -name "*.[ww][mm][aa]" -type f -exec mv {} $destination \;
cd $destination
for i in `ls`#這裡是外迴圈
donamei=(`du $i`)#這裡使用du選項,記得如果使用了du -h選項的話,會四捨五入,會出現不同結果
szi=$
nfi=$
for j in `ls`#這裡是內迴圈
donamej=(`du $j`)
szj=$
nfj=$
if [ ! -f "$nfi" ]#這個判斷是為了防止for迴圈在刪除了乙個檔案後還進行匹配
then :
elif [ "$nfi" != "$nfj" -a "$szi" -eq "$szj" ]
then
echo "$nfj" #列印出被刪除的檔案
rm -rf $nfj
#sleep 1這個用於除錯指令碼使用因為這個我們可以set -x更清楚直觀的觀察到執行過程
fidone
done 2>/dev/null #把標準錯誤重定向到/dev/null不顯示出來,因為如果在迴圈中我們刪除了後面檔案
當i迴圈到該檔案時,該檔案已經被刪除了,系統會報錯,但這些是已知錯誤沒有必要讓它顯示出來
刪除目錄下以數字.***結尾的檔案
find /***/ -name "*[0-9].***" -exec -rf {} \;
要善於觀察,呵呵,不過這事也沒算白忙乎,至少又熟悉了一下for迴圈
刪除目錄下檔案
刪除當前目錄下的檔案 1.rm f 最經典的方法,刪除當前目錄下的所有型別的檔案 2.find type f delete或find type f exec rm f 用find命令查詢普通檔案並刪除or用find命令的處理動作將其刪除 3.find type f xargs rm f 用於引數列表...
Linux 目錄下檔案按照檔案大小排序(三種方式)
在實際專案維護過程中,有時因為日誌檔案或者其他資料檔案占用過多磁碟空間,導致機器空間不足,引發服務異常。此時需要清理一些無用的檔案 日誌檔案或者資料檔案 有三種方式,可以對目錄下的檔案,按照檔案大小進行排序,便於區分具體是哪些檔案占用空間。1 按照檔案大小進行降序排列 2 按照檔案大小進行公升序排列...
vc 刪除目錄或檔案與目錄下檔案
因為vc中沒有刪除非空目錄的函式,所以要用以下方法來做 注意 路徑字串str的最後不要加 void deletedir cstring str else 不是資料夾 deletefile strdel 刪除檔案 api finder.close removedirectory str 刪除資料夾 a...