Команда Unix для поиска файлов в одном каталоге, но не в другом?

Команда Unix для поиска файлов в одном каталоге, но не в другом?

Какая команда unix находит файлы, которые находятся в одном каталоге, а не в другом? Меня интересуют только имена файлов.

Спасибо.

решение1

Я предполагаю, что вы хотите выполнить этот поиск из каталога более высокого уровня. Если так, вы можете использовать опцию -pathс find.

Например, учитывая структуру каталогов ниже

+---dir1/test1.txt
  |
  |--dir2/test1.txt

чтобы найти файлы, соответствующие 'test*' в dir1, используйте

find -path '*dir1*' -iname 'test*'

решение2

Чтобы сравнить два каталога, вы можете использовать это:

diff <(cd "$dir1"; find | sort) <(cd "$dir2"; find | sort)

Чтобы сделать это только одним способом и получить список файлов, попробуйте следующее:

diff <(cd "$dir1"; find | sort) <(cd "$dir2"; find | sort) \
| grep '< ./' | sed "s,< ./,$dir1/,"

Чтобы это работало правильно, ни $dir1, ни $dir2 не должны включать завершающий слеш.

Связанный контент