Wie finde ich das 4. und 5. Zeichen des Dateinamens?

Wie finde ich das 4. und 5. Zeichen des Dateinamens?
$ ls
abcmkde
ghemkde
vdecdde

Beispielsweise möchte ich nur Dateinamen mit dem 4. und 5. Zeichen mit nur einer Iteration einer einzelnen Übereinstimmung auflisten ( mkund cdim obigen Beispiel).

Es gibt eine Reihe von Dateien mit unterschiedlichen Namen und unterschiedlichen vierten und fünften Buchstaben.

Antwort1

Wenden Sie die Unix-Philosophie an: ein Werkzeug für jeden Job und die Shell, um sie miteinander zu kombinieren. Es gibt drei Jobs:

  • Listen Sie die Dateinamen auf. Sofern Ihre Dateinamen keine nicht druckbaren Zeichen oder Steuerzeichen enthalten, ist es in diesem Fall lssinnvoll, die Ausgabe zu analysieren. Wenn Sie nur bestimmte Dateien auflisten möchten, können Sie etwas wie

    printf '%s\n' *.ext
    

    um einen Namen pro Zeile aufzulisten.

  • Extrahieren Sie den Teil des Dateinamens, der Sie interessiert. Um das 4. und 5. Zeichen zu extrahieren, können Sie cut -b 4,5(für Einzelbyte-Zeichen) oder cut -c 4,5(um Mehrbyte-Zeichen zuzulassen) verwenden.

  • Entfernen Sie Duplikate. Der einfachste Weg, dies zu tun, ist sort -u(dadurch werden die Teile auch sortiert).

RohreProgramme zusammenführen. Das Ergebnis ist

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

Antwort2

Mit ksh93oder :bashzshmksh

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

verwandte Informationen