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