スクリプトはファイル名を繰り返すために md5sum を追加しますが、実行時にエラー通知を受け取ります。

スクリプトはファイル名を繰り返すために md5sum を追加しますが、実行時にエラー通知を受け取ります。

そのため、このサイトの他のスレッドから取得した情報を使用してファイルを別のディレクトリにコピーし、重複したファイル名に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

私が言ったように、スクリプトはうまくいくようですが、これらのメッセージが表示される理由のアイデアやスクリプトの調整/改善に関する提案も感謝します。ありがとう

答え1

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

関連情報