como verificar se cada subdiretório tem um nome exclusivo em um diretório

0

Eu tenho uma pasta onde existem subdiretórios e arquivos. Eu quero garantir que não haja dois diretórios com o mesmo nome. Como pode fazer isso?

    
por neouyghur 23.12.2016 / 21:08

1 resposta

3

Este comando irá imprimir os nomes dos diretórios que aparecem várias vezes:

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

Se a saída estiver vazia, não haverá nomes duplicados. Se a saída não estiver vazia, você poderá encontrar o caminho completo das duplicatas com:

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

Aviso: devido ao uso de \n como o delimitador de nomes de arquivos na opção -printf , isso não funcionará se você tiver alguns diretórios com \n incorporados neles. Espero que seja uma limitação aceitável.

A opção -printf de find está disponível em implementações GNU, comuns em sistemas Linux, e pode não estar disponível em implementações BSD, comuns em sistemas BSD. Se o seu find não tiver essa opção, você poderá usá-lo:

find path/to/dir -type d | awk -F/ '{ print $NF }' | sort | uniq -d
    
por 23.12.2016 / 21:24