【问题标题】:Finding and Moving Duplicate Files from two Directories using shell script使用 shell 脚本从两个目录中查找和移动重复文件
【发布时间】:2015-11-11 04:48:43
【问题描述】:

嘿,我有三个文件夹

1 : Landing Folder
2 : Completed Folder
3 : Duplicates Folder

我想比较 1 和 2 中的文件是否有重复项。如果发现重复文件,我想将重复文件移动到 3。

有没有什么方法可以使用 Shell 脚本来做到这一点?

我尝试过但没有成功的是在 1 和 2 上使用 ls >file_names.txt 在文本文件中获取它们的文件名,以便我可以比较文本文件中的重复记录。我在 echo 命令中获得了重复项列表,不知道如何移动它们。

【问题讨论】:

  • 您想将重复文件从文件夹 1 和文件夹 2 删除到文件夹 3。意味着文件应该在文件夹 1 或文件夹 2 或文件夹 3 中具有单个副本。
  • 在我的场景中,文件夹 1 将始终具有文件夹 2 同名文件的副本。我想将这两个文件都移动到文件夹 3。
  • 如果两个文件同名且内容不同,那么您更喜欢谁的文件夹内容?
  • 最好是 1,但是我不能将两个重复的文件都移到 3 吗?就像两个文件夹中的内容一样。
  • 文件夹 1 : a.txt b.txt 文件夹 2 : a.txt >> 移动后 >> 文件夹 3 : a.txt a.txt

标签: shell centos etl


【解决方案1】:

如果 file1 包含文件夹 1 中的文件列表,而 file2 包含文件夹 2 中的文件列表,则下面的代码将起作用

grep -f file1 file2 | while read line
do 
mv folder1/$line folder3
rm -f folder2/$line
done

【讨论】:

    【解决方案2】:

    目录

    all:所有文件(例如 10 个)
    some: 一些文件(例如 3)

    # make sure you are in "all" directory
    for file in ./*;
    do
    if test -f "../some/$file then
        rm $file
    fi
    done
    

    输出

    常见的文件会在一些文件中。
    不常见的文件(7个文件)将保留在“全部”中

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2016-06-06
      • 1970-01-01
      • 2023-04-05
      • 1970-01-01
      • 2018-07-13
      • 2014-02-18
      • 1970-01-01
      • 2019-01-18
      相关资源
      最近更新 更多