Localizando nomes de arquivos que terminam em um caractere específico com ou sem extensão [duplicada]

1

Eu tenho um monte de arquivos em uma pasta que terminam em um número de versão diferente, como 1, 2, 3, etc. Alguns deles têm extensões, alguns deles não. Existe alguma maneira que eu poderia usar um comando como ls, find ou grep que pode listar todos os arquivos que terminam em um caractere específico, como '1', que pode ou não terminar em uma extensão?

Por exemplo, em um diretório, eu tenho os seguintes arquivos: ver1.txt , ver1 e file.1 . Eu gostaria de fazer algo que retornasse ver1.txt e ver1 , mas não file.1 , se isso ajudar qualquer um. Eu tentei usar algo como ls *[1.]* , mas isso não está fazendo o que eu quero ...

    
por user3742846 12.09.2018 / 00:47

2 respostas

0

% purofind:

find . -regex '\.[^.]*1\|.*1\.[^.]*'

Isso corresponderá a ver1 e ver1.txt e file1.ver1.txt , mas não file1.ver2.txt . Se você quiser combinar isso também:

find . -regex '\.[^.]*1\|.*1\..*'

Você deve executar esses comandos no diretório pesquisado, find somepath ... não funcionaria, como regex corresponde ao caminho completo.

    
por 12.09.2018 / 01:48
1

Como não é possível dar um exemplo de cada nome de arquivo que poderia existir e todos os padrões que você poderia procurar, eu irei para o que você tem:

find . -type f | awk -F / '{print $2}' | grep -v '\.[1-100]$'

Considerando que você forneceu ver1.txt , ver1 e file.1 como os arquivos no diretório em que você está pesquisando, o comando acima retornará a saída desejada:

ver1.txt
ver1

Para explicar cada parte:

find . -type f Retorna todos os arquivos no diretório atual

awk -F / '{print $2}' Remove o ./ no início de cada arquivo que aparece no comando find

grep -v '\.[1-100]$' Retorna todos os arquivos que não terminam em .# , em que # é qualquer número de 1-100 . A opção v localiza todas as linhas que não correspondem a .# No caso do exemplo que você forneceu, é necessário usar \ para escapar do . e usar aspas simples ao redor da string. O $ indica arquivos que terminam com essa string, embora no seu caso, funcione sem ela. Eu só o incluí no caso de haver arquivos com . em outro lugar no nome do arquivo.

Você terá que alterar os parâmetros dependendo do que está procurando, mas isso deve ajudá-lo.

    
por 12.09.2018 / 01:33