我可以比较文件夹内容并返回非重复文件吗?

时间:2019-05-29 12:57:45

标签: bash shell grep find

我的目录中包含许多文件。我有另一个目录,目录中的文件相同,只是现在所有文件都被命名为相同的文件,但它们位于与另一个目录中的文件名相同的文件夹中。

示例:

第一目录XYZ.txt, ABC.txt, LMN.txt

第二个目录:XYZ/text.txt, ABC/text.txt, LMN/text.txt

我正在寻找哪些文件仅存在于第二个目录中,而不存在于第一个目录中。

如何使用命令行执行此操作?

我在两个文件夹中都使用了find命令。 ABC.txt文件夹包含870个文件。

find . -name '*.txt' | egrep -f "*.txt"

第二个文件夹包含109个文件夹

find . -name 'text.txt' | egrep -c 'text.txt'

因此,我希望发现109个文件中的80/90可能位于870个文件的文件夹中。

我正在寻找两个目录中都存在哪些文件,并列出它们。

1 个答案:

答案 0 :(得分:0)

假设文件名或目录名中没有换行符,则可以执行以下操作:

diff \
    <(find first_dir -name '*.txt' -printf '%p\n' | sort) \
    <(find second_dir -name 'text.txt' | sed 's:.*/\([^/]*\)/[^/]*$:\1.txt:' | sort)

您可能想使用comm而不是diff(idk)。