У меня есть папка, в которой существуют подкаталоги и файлы. Я хочу убедиться, что нет двух каталогов с одинаковым именем. Как это сделать?
1 ответ
Эта команда напечатает имена каталогов, которые появляются несколько раз:
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