¿Cómo encontrar el cuarto y quinto carácter del nombre de los archivos?

¿Cómo encontrar el cuarto y quinto carácter del nombre de los archivos?
$ ls
abcmkde
ghemkde
vdecdde

Por ejemplo, solo quiero enumerar el nombre del archivo con solo el cuarto y quinto carácter con una sola iteración de coincidencia única ( mky cden el ejemplo anterior).

Hay un montón de archivos con diferentes nombres y un cuarto y quinto carácter diferentes.

Respuesta1

Aplicar la filosofía Unix: una herramienta para cada trabajo y el shell para combinarlas. Hay tres trabajos:

  • Enumere los nombres de los archivos. A menos que los nombres de sus archivos contengan caracteres no imprimibles o caracteres de control, este es un caso en el que analizar la salida lses razonable. Si quisieras enumerar solo ciertos archivos, entonces podrías usar algo como

    printf '%s\n' *.ext
    

    para enumerar un nombre por línea.

  • Extraiga la parte del nombre del archivo que le interese. Para extraer el cuarto y quinto carácter, puede utilizar cut -b 4,5(para caracteres de un solo byte) o cut -c 4,5(para permitir caracteres de varios bytes).

  • Eliminar duplicados. La forma más sencilla de hacerlo es sort -u(esto también clasifica las piezas).

Tuberíaunir los programas juntos. El resultado es

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

Respuesta2

Con ksh93o bash:zshmksh

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

información relacionada