Какая команда 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 не должны включать завершающий слеш.