Encontre todas as pastas que começam com o intervalo numérico

1

Como posso encontrar todas as pastas que começam com um valor no intervalo de números de 500 a 899? Eu só preciso listá-los em um arquivo.

Informações adicionais:

  • Maxdepth 2
  • Exemplos de nomes de pastas: 593091_azerty_qwerty ou 849934_blablablabla_bla_blabla
por Jens 11.03.2016 / 09:22

2 respostas

2

experimente isso (se o seu find suportar a opção -maxdepth ):

find parent_dir -maxdepth 2 -type d \(
  -name '[5-8][0-9][0-9][!0-9]*' -o -name '[5-8][0-9][0-9]' \) > my_file1.txt
    
por 11.03.2016 / 10:01
2

Com zsh , supondo que os números sejam sempre inteiros decimais (no intervalo suportado nativamente pelo seu processador):

setopt extended_glob
dirs=(<500-899>([^0-9]*|)(/N) */<500-899>([^0-9]*|)(/DN))

No entanto, observe que, para o segundo padrão, se houver links simbólicos para os diretórios no diretório atual, zsh procurará o diretório <500-899>... em seu destino.

Encurtado com fatoração de expansão de contraventamento:

dirs=({,*/}<500-899>([^0-9]*|)(/DN))

Se os números forem sempre seguidos por _ , você poderá simplificá-lo para:

dirs=({,*/}<500-899>_*(ND))

Observe que as versões de zsh anteriores a 5.2, devido à forma como os inteiros são representados pelo processador, corresponderão aos números entre 500 e 899 módulo 2 64 , portanto, por exemplo coincidir com 590295810358705652224_something , pois são 2 69 + 512.

    
por 11.03.2016 / 11:48