将文件从一个文件夹移动到另一个文件夹,但前提是文件名和大小完全匹配

将文件从一个文件夹移动到另一个文件夹,但前提是文件名和大小完全匹配

我想将文件从一个文件夹移动到另一个文件夹,但前提是目标文件已存在且大小匹配。如果文件名和大小不完全匹配,我想跳过移动。基本上,我正在删除重复项。

建议?

答案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(有时称为prenameperl-rename来消除与 util-linux 的歧义rename):

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

相关内容