Usando o comando find para encontrar a pasta ignorando o caso

4

Eu gostaria de saber se uma determinada pasta está presente ou não. Eu usei o seguinte comando

find /mnt/md0/ -maxdepth 1 -name 'dcn'||'DCN'

Eu quero saber se o nome da pasta é DCN ou dcn.
 Como eu faria isso?

    
por Jishnu U Nair 04.02.2014 / 14:06

3 respostas

11

Você está procurando a opção -iname , que significa "ignorar caso" em GNU find , juntamente com a opção -type d para selecionar apenas diretórios.

find /mnt/md0/ -type d -maxdepth 1 -iname dcn

Para mais uma explicação detalhada sobre encontrar opções, consulte explicação do explainhells.com sobre encontrar . (Isso corresponderá a qualquer caso: dcn , DcN , DCn )

Editar 1:

Como estado em comentário por Olivier Dulac para usar com o GNU não encontrar ou encontrar a versão antiga que você poderia usar:

find /mnt/md0 -type d -maxdepth 1 -print | grep -i '/dcn$'

veja esta resposta para ter uma compatibilidade real com a versão não-GNU e antiga

    
por 04.02.2014 / 14:10
5

Você pode usar isto:

find /mnt/md0/ -type d -maxdepth 1 \( -name 'dcn' -o -name 'DCN' \)
    
por 04.02.2014 / 14:19
4

Padrão:

find /mnt/md0/. ! -name . -prune -type d \( -name dcn -o -name DCN \)

Ou para correspondência insensível a maiúsculas e minúsculas:

find /mnt/md0/. ! -name . -prune -type d -name '[dD][cC][nN]'

Você não precisa necessariamente de find .

printf '%s\n' /mnt/md0/[dD][cC][nN]/
    
por 04.02.2014 / 16:37

Tags