删除重复项

删除重复项

在这种情况下,我有 2 个文件夹,/ParentFolder/FolderName/Files.mp4 和 /Mount/FolderName/Files.mp4。

本质上,/ParentFolder 中的任何内容都需要替换 /mount 中具有相同名称的任何文件夹。我必须使用 ACDCLI 进行实际复制,因此我需要先通过调用 /ParentFolder/* 中的任何文件夹名称并 rm -rf /mount/"FolderName" 来删除这些文件夹

如果它是一个文件夹很容易,但我不确定如何说,从 X 获取所有文件夹名称,如果它们存在于 Y 中则删除。

答案1

我不确定这是否是你想要的。但要获取 X 中的所有文件夹名称,你可以执行以下操作:

find /some/directory -type d -print

在 Y 中重复此操作。当然,如果两个目录是: /ParentFolder/FolderName/Files.mp4/Mount/FolderName/Files.mp4,那么请确保您cd足够远,以便您已经移动过路径不同的部分。

因此,在第一个目录中,cd进入/ParentFolder。在第二种情况下,cd进入/Mount

如果您在两个目录中都执行此操作,您将得到两个列表(我们将它们称为list1.txtlist2.txt),您可以将它们连接起来,排序,然后打印唯一的行:

cat list1.txt list2.txt | sort | uniq -u

这些是仅存在于一个列表中的目录。您可以将其存储在变量中:

unique_paths=`cat list1.txt list2.txt | sort | uniq -u | xargs`

然后迭代:

for my_path in ${unique_paths} ; do
  if [ -e "/ParentFolder/${my_path}" ] ; then
    ##  Do something to it
  else
    ##  This means it is in /Mount/, so do something else
  fi
done

我自己还没有尝试过——所以请先测试一下。

另外,您可能希望查看 rsync 的手册页。其选项的某些组合可能会实现您想要的效果。

相关内容