Localizar pastas contém nomes + 1900-1990 + nomes

0

Estou tentando fazer na busca por muitas pastas contém ex. %código%. Eu não quero pastas ex. com Events.1900-1990.events , apenas as pastas contêm os anos de 1900 - > 1990.

O nome Events.2004 pode ser qualquer coisa, pode ser aniversários, guerras, etc.

Eu sei que devo usar o regex, mas não sou especialista aqui: (

Eu tentei algo assim:

find . -type d -regex '*/[a-z][A-Z]/19+\[0-9]*' -print

Mas sem encontrar nada

    
por SH1986 08.09.2018 / 10:55

1 resposta

1
find . -type d '(' -name '*19[0-8][0-9]*' -o -name '*1990*' ')'

Isto encontraria qualquer diretório dentro ou sob o diretório atual cujo nome contenha qualquer um dos números de 1900 a 1990. O teste é dividido em dois no nome do arquivo, onde os primeiros testes para números entre 1900 e 1989, e o segundo teste é para 1990.

Expressões regulares não precisam ser usadas neste caso. Os padrões acima são padrões de globalização de nomes de arquivo.

Se você quiser adicionar um teste para um sufixo de nome de arquivo .events , poderá fazer isso de duas maneiras:

find . -type d -name '*.events' '(' -name '*19[0-8][0-9]*' -o -name '*1990*' ')' 

find . -type d '(' -name '*19[0-8][0-9]*.events' -o -name '*1990*.events' ')'

Seu comando não encontrará nada, pois um * no início de uma expressão regular corresponde ao caractere * . Você também pode escapar de um dos [ na expressão, o que faz com que ele corresponda ao caractere [ .

    
por 08.09.2018 / 11:22