あるフォルダから別のフォルダにファイルを移動したいのですが、ターゲットファイルがすでに存在し、サイズが一致している場合にのみ可能です。ファイル名とサイズが正確に一致しない場合は、移動をスキップしたいと思います。基本的に重複を排除しています。
提案?
答え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-rename
rename
cd /one/folder &&
rename '
$other = "/another/folder/$_";
$_ = $other if -e $other && -s $_ == -s $other' ./*