У меня есть папка, в которой существуют подкаталоги и файлы. Я хочу убедиться, что нет двух каталогов с одинаковым именем. Как это сделать?

1 ответ1

3

Эта команда напечатает имена каталогов, которые появляются несколько раз:

find path/to/dir -type d -printf "%f\n" | sort | uniq -d

Если вывод пуст, то повторяющихся имен нет. Если выходные данные не пусты, вы можете найти полный путь к дубликатам с помощью:

find path/to/dir -type d -name the-name

Предупреждение: из-за использования \n в качестве разделителя имен файлов в опции -printf это не будет работать, если у вас есть некоторые каталоги с \n встроенными в них. Надеюсь, это приемлемое ограничение.

Опция -printf find доступна в реализациях GNU, распространенных в системах Linux, и может быть недоступна в реализациях BSD, распространенных в системах BSD. Если ваша find не имеет этой опции, вы можете использовать это вместо:

find path/to/dir -type d | awk -F/ '{ print $NF }' | sort | uniq -d

Всё ещё ищете ответ? Посмотрите другие вопросы с метками .