我的目录中包含许多文件。我有另一个目录,目录中的文件相同,只是现在所有文件都被命名为相同的文件,但它们位于与另一个目录中的文件名相同的文件夹中。
示例:
第一目录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个文件的文件夹中。
我正在寻找两个目录中都存在哪些文件,并列出它们。
答案 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)。