ファイルをあるフォルダから別のフォルダに移動します。ただし、ファイル名とサイズが正確に一致する場合にのみ可能です。

ファイルをあるフォルダから別のフォルダに移動します。ただし、ファイル名とサイズが正確に一致する場合にのみ可能です。

あるフォルダから別のフォルダにファイルを移動したいのですが、ターゲットファイルがすでに存在し、サイズが一致している場合にのみ可能です。ファイル名とサイズが正確に一致しない場合は、移動をスキップしたいと思います。基本的に重複を排除しています。

提案?

答え1

重要なことに、簡単なスクリプトを書く必要があります。

#!/bin/bash
src=$1
dst=$2

for f in $src/*; do
  name=$(basename "$f")
  if [ -f "$dst/$name" ]; then
    src_size=$(stat --format '%s' "$f")
    dst_size=$(stat --format '%s' "$dst/$name")
    echo "$src_size $dst_size"
    # If the size match, check if the md5sum match, too
    # Then move of simply delete the src file
  fi
done

両方のファイルの md5sum または sha*sum を確認して、実際に同じであることを確認または比較する必要があります。

答え2

使用rename(時々util-linuxで呼び出されるか、明確にするためprename):perl-renamerename

cd /one/folder &&
  rename '
    $other = "/another/folder/$_";
    $_ = $other if -e $other && -s $_ == -s $other' ./*

関連情報