刪除目錄下檔案大小相同的檔案

2021-09-03 09:55:20 字數 1302 閱讀 3669

的一首歌時會產生多個檔案存放在系統裡,開始的思路是想通過把系統裡的所有***及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...