Como encontrar o 4º e o 5º caractere do nome dos arquivos?

Como encontrar o 4º e o 5º caractere do nome dos arquivos?
$ ls
abcmkde
ghemkde
vdecdde

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

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

Responder1

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

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

    printf '%s\n' *.ext
    

    para listar um nome por linha.

  • Extraia a parte do nome do arquivo que lhe interessa. 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 caracteres de vários bytes).

  • Remova duplicatas. A maneira mais simples de fazer isso é sort -u(isso também classifica as peças).

Tubosjunte-se aos programas juntos. O resultado é

ls | cut -b 4,5 | sort -u

Responder2

Com ksh93, bash, zshou mksh:

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

informação relacionada