Suchordner zeigt nur bestimmte Wörter an

Suchordner zeigt nur bestimmte Wörter an

Ich habe einen Ordner mit folgenden Dateien:

ondemand_kvm131_img.2
vm114_img.2
vm114_img.3
ondemand_vm205_img.3
label_ondemand_kvm131_img.1
vm117_img.1

Ich möchtenurdie "Namen" anzeigen, daher sollte die Ausgabe in diesem Fall sein

kvm131
vm114
vm114
vm205
kvm131
vm117

Wie kann das gemacht werden? Durch die Verwendung von sed? Grep? Vielen Dank im Voraus.

Antwort1

Versuche dies:

ls -1 | sed 's/_img.*//;s/.*_//'

Antwort2

Dies kann auf verschiedene Arten erfolgen, je nach der genauen Formatierung der Namen und Ihrem Vorhaben. Am einfachsten wäre wahrscheinlich Folgendes ls | sed:

$ ls | sed 's/^\(.*_\)*\([^_]*\)_img\.[0-9]/\2/'
kvm131
kvm131
vm205
vm114
vm114
vm117

Wenn Ihre Dateinamen vernünftig sind und Sie nur ein visuelles Erscheinungsbild wünschen, ist dies in Ordnung, aber wenn Sie mehr mit den Namen machen, besteht die Möglichkeit von Fehlern bei ungewöhnlichen Dateinamen. Sie können sie einzeln wie folgt abrufen:

$ for file in *; do left=${file%_img.?}; base=${left##*_}; echo $base; done 
kvm131
kvm131
vm205
vm114
vm114
vm117

Ersetzen Sie echodurch den Befehl Ihrer Wahl. Beide können geändert werden, um dem Format besser zu entsprechen, wenn Sie insgesamt ein anderes Format haben.

verwandte Informationen