我想将文件从一个文件夹移动到另一个文件夹,但前提是目标文件已存在且大小匹配。如果文件名和大小不完全匹配,我想跳过移动。基本上,我正在删除重复项。
建议?
答案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
(有时称为prename
或perl-rename
来消除与 util-linux 的歧义rename
):
cd /one/folder &&
rename '
$other = "/another/folder/$_";
$_ = $other if -e $other && -s $_ == -s $other' ./*