Могу ли я сравнить содержимое папок и вернуть неповторяющиеся файлы? - PullRequest
0 голосов
/ 29 мая 2019

У меня есть каталог с несколькими файлами.У меня есть другой каталог с идентичными файлами, только теперь все файлы имеют одинаковые имена, но находятся в папке с такими же именами, что и имена файлов в другом каталоге.

Пример:

ПервыйКаталог 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'

Итак, я ожидаю, что, возможно, 80/90 из 109 файлов находятся в папке с 870 файлами.

Я хочу выяснить, какие файлы присутствуют в обоих каталогах, и вывести их в список.

1 Ответ

0 голосов
/ 29 мая 2019

Если в именах файлов или каталогов нет новых строк, вы можете сделать что-то вроде:

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

Возможно, вы захотите использовать comm вместо diff, idk.

...