別のディレクトリで重複フ​​ァイル(fdupesで識別される)の名前を変更するより速い方法は何ですか?

別のディレクトリで重複フ​​ァイル(fdupesで識別される)の名前を変更するより速い方法は何ですか?

私はジャーナル記事のPDFファイルでいっぱいのディレクトリを持っており、ほとんどはBibtexキーと命名されました。しばらく前に外付けハードドライブにバックアップしていましたが、最新のままではなく、名前の異なる重複ファイルが非常に多かったです。両方のディレクトリを再同期し、重複ファイルを削除したいと思います。

fdupesを使用してそれらのいくつかを識別し、今では素晴らしいペアのリストを持っています。ただし、外部ドライブのほとんどのレプリカには意味のない名前があります。多すぎて削除して再コピーするのではなく、最初のディレクトリの重複エントリと同じように名前を変更したいと思います。だから私はrsyncを使用したくありません。

たとえば、fdupes 出力が次のような場合:

/home/articles/bibtex.pdf
/external/articles/morearticles44.pdf

書くより速い方法がありますか?

mv /external/articles/morearticles44.pdf /external/articles/bibtex.pdf

各レプリカペアについて?

ベストアンサー1

私の経験では、fdupesファイルを出力する順序が一貫していない可能性があります(--deleteこのオプションには自分自身の問題がありました)。これは、ファイルが特定の順序である必要がないため、非常に強力です(他のフォルダに常に2つの重複ファイルがある限り)。

# note no trailing slash
source_dir=/home/articles
target_dir=/external/articles

fdupes "$target_dir" "$source_dir" |
  while IFS= read file; do
    case "$file" in
      "$source_dir/"*)
         source=${file##*/}
         ;;
      "$target_dir/"*)
         target=$file
         ;;
      '')
         if [ "$source" ] && [ "$target" ]; then
           echo mv -i "$target" "$target_dir/$source"
         fi
         unset source target
         ;;
    esac
  done

その後、コマンドが印刷され、必要なものがわかったら削除されますmvechoまた、上書き内容がある場合は、-iオプションでメッセージを表示します。mv

おすすめ記事