Ich versuche, ein Skript für die Arbeit zu schreiben, um einige Berichte für eine Ausgabe zu automatisieren. Die Protokolldateien werden (derzeit wird sie in Zukunft standardisiert) in dieser Art von Pfadstruktur gespeichert:
/<root_path>/<process_one_path>/logs/<time_date_stamp>/<specific_log_file>
/<root_path>/<process_two_path>/logs/<different_time_date_stamp>/<specific_log_file>
Jeder Teil des Pfads ist bekannt, mit Ausnahme der Zeitstempel, die immer die neuesten im Ordner sind.
Wenn ich versuche, anstelle des Zeitstempels einen Platzhalter zu verwenden, erhalte ich mehrere Ergebnisse, z.
> ls /<root_path>/<process_two_path>/logs/* [tab]
20130102-175103
20130118-090859
20130305-213506
Ich möchte nur, dass es das neueste zurückgibt. Ist das mit Bash möglich?
NB (Ich habe kein zsh, und so schön es klingt, ich bezweifle, dass wir es jemals bei der Arbeit bekommen werden.)
-1
). Dies wurde in Bash 4.2 hinzugefügt. RHEL5 ist wahrscheinlich die älteste unterstützte Hauptdistribution für Unternehmen und verwendet Bash 4.2.20.bash
haben:"${list[@]: -1}"
wie inksh93
([-1]
kommt vonzsh
).3.2
. RHEL 3 und 4 werden noch über längere Zeit unterstützt.POSIXly:
Da erwähnen Sie
zsh
:quelle
Verwenden Sie den Bash-Glob in einer Bash-for-Schleife. So was:
Dies hängt davon ab, dass Bash die Glob-Erweiterung alphabetisch sortiert. Lesen Sie das Bash-Handbuch für weitere Informationen. Beachten Sie, dass dies von LC_COLLATE abhängt . Dies hängt auch davon ab, dass die Variable
filename
nach Beendigung der Schleife noch den letzten Wert enthält.Wenn Sie den Dateinamen mit dem ältesten Zeitstempel haben möchten, können Sie dies folgendermaßen tun:
quelle
-1 ist die Standardeinstellung in Pipelines, und die ls-Ausgabe sollte bereits sortiert sein:
Wenn andere Benutzer das erste oder letzte Ergebnis interaktiv einfügen möchten, können Sie in .inputrc menu-complete oder menu-complete-backward binden:
Wenn Show-All-If-Ambiguous aktiviert ist,
set completion-query-items 0
wird die Eingabeaufforderung entfernt, wenn 101 oder mehr Ergebnisseset page-completions off
vorliegen, und der Pager wird deaktiviert.quelle
Sollte den Trick machen.
quelle
ls
. Je.