Linux

腳本添加的 md5sum 以重複文件名,但在執行時仍會收到錯誤通知

  • October 13, 2015

因此,通過使用該站點上其他執行緒的一些資訊,我設法獲得了一個腳本來將文件複製到另一個目錄,然後將 md5sum 添加到重複的文件名中。但是,我並不完全滿意,因為當我執行腳本時我仍然會收到一些 BASH 通知,我可以通過一些幫助理解/解決來做。首先是腳本。

cp -r $dir1/* $dir2

cd $dir2  

fdupes -r $dir2 | while read i; do

bn="${i%.*}"
ext="${i##*.}"
md5=$(md5sum "$i" | awk '{ print $1 }')

mv -v "$i" "${bn}_${md5}.${ext}"

done 

執行腳本時我收到的消息是:

md5sum: : No such file or directory
mv: cannot stat ‘’: No such file or directory

正如我所說,該腳本似乎確實有效,但任何關於我為什麼收到這些消息的想法,以及任何調整/改進腳本的建議都將不勝感激。謝謝

根據我的理解,我猜命令有一個問題,fdupes它在最後輸出一個空行:

[PRD][]localhost:~ 12:17:09     
$ fdupes -r work/
work/sockperf-sockperf_v2/news          
work/sockperf-sockperf_v2/src/.dirstamp
work/sockperf-sockperf_v2/src/.deps/.dirstamp

[PRD][]localhost:~ 12:17:19

然後在循環中處理時,最後一個元素為空,這會md5sum在文件不存在時產生錯誤:

$ md5sum ' ' 
md5sum: : no such file of directory 

然後腳本嘗試移動這個也會產生mv錯誤的空名稱文件。

引用自:https://unix.stackexchange.com/questions/235772