Como encontrar o quarto e quinto caractere do nome dos arquivos?

0
$ ls
abcmkde
ghemkde
vdecdde

Por exemplo, só quero listar o nome do arquivo com apenas 4 e 5 caracteres com apenas uma iteração de correspondência única ( mk e cd no exemplo acima).

Há vários arquivos com nomes diferentes e quarto e quinto caractere diferentes.

    
por Jignesh Patel 28.04.2017 / 23:05

2 respostas

1

Com ksh93 , bash , zsh ou mksh :

for file in *; do
    printf '%s\n' "${file:3:2}"
done | sort -u
    
por 28.04.2017 / 23:22
1

Aplique a filosofia Unix: uma ferramenta para cada trabalho e o shell para combiná-los. Existem três empregos:

  • Relacione os nomes dos arquivos. A menos que seus nomes de arquivo contenham caracteres não imprimíveis ou caracteres de controle, esse é um caso em que a análise da saída de ls é razoável. Se você quisesse listar apenas alguns arquivos, poderia usar algo como

    printf '%s\n' *.ext
    

    para listar um nome por linha.

  • Extraia a parte do nome do arquivo em que você está interessado. Para extrair o 4º e o 5º caractere, você pode usar cut -b 4,5 (para caracteres de byte único) ou cut -c 4,5 (para permitir multi-caracteres). caracteres de byte).

  • Remover duplicados. A maneira mais simples de fazer isso é sort -u (isso também classifica as partes).

Tubos juntam-se aos programas juntos. O resultado é

ls | cut -b 4,5 | sort -u
    
por 29.04.2017 / 14:25