Mein Ordner parent
hat folgenden Inhalt:
A.Folder B.Folder C.File
Es enthält sowohl Ordner als auch Dateien. B.Folder
ist neuer. Jetzt möchte ich nur noch wissen B.Folder
, wie ich das erreichen kann. Ich habe es versucht,
ls -ltr ./parent | grep '^d' | tail -1
aber es gibt mir drwxrwxr-x 2 user user 4096 Jun 13 10:53 B.Folder
, aber ich brauche nur den Namen B.Folder
.
shell
files
ls
timestamps
Daniel
quelle
quelle
ls -ltr ./parent | grep '^d' | tail -1| awk '{print $NF}'
Antworten:
Versuche dies:
-t
Optionenls
sortieren nach Änderungszeit, neueste zuerst.Wenn Sie entfernen möchten
/
:quelle
/
?ls -td -- ./parent | head -n 1
gibt mir nicht die richtigen Ergebnisse, MUSS ICH Subshell wiecd ./parent
jedes Mal verwenden und diesen Befehl ausführen? Irgendeine Lösung?Der Unterschied zu Hersons Lösung ist der Schrägstrich danach
*
, der bewirkt , dass die Shell alle Nicht-Dir-Dateien ignoriert. Anders als bei Gnouc funktioniert es, wenn Sie sich in einem anderen Ordner befinden.Cut muss die Anzahl der übergeordneten Verzeichnisse (2) kennen, um das abschließende '/' zu löschen. Wenn Sie das nicht haben, verwenden Sie
quelle
Obligatorische Antwort:
Die Zeichen in Klammern sind Glob-Qualifikationsmerkmale :
/
Nur Verzeichnisseom
abgleichen, Übereinstimmungen nach zunehmendem Alter sortieren und[1]
nur die erste (dh neueste) Übereinstimmung beibehalten. FügenN
Sie hinzu, wenn Sie ein leeres Array erhalten möchten (normalerweise erhalten Sie ein 1-Element-Array), wenn es kein Unterverzeichnis von gibtparent
.Angenommen,
parent
es enthält kein Shell-Globbing-Zeichen:Wenn Sie nicht über zsh verfügen, aber über neuere GNU-Tools (dh nicht eingebettetes Linux oder Cygwin), können Sie diese verwenden
find
, sie sind jedoch umständlich. Hier ist eine Möglichkeit:Es gibt eine einfache Lösung
ls
, die funktioniert, solange kein Verzeichnisname Zeilenumbrüche oder (auf einigen Systemen) nicht druckbare Zeichen enthält:quelle
Der folgende Befehl erledigt die Aufgabe auch dann, wenn der Verzeichnisname Leerzeichen enthält:
Die aktualisierte Erklärung des Materials in den Backticks lautet:
.
- das aktuelle Verzeichnis (möglicherweise möchten Sie hier einen absoluten Pfad angeben)-mindepth/-maxdepth
- Beschränken Sie den Befehl find nur auf die unmittelbaren untergeordneten Elemente des aktuellen Verzeichnisses-type d
- nur Verzeichnisse-exec stat ..
- gibt die geänderte Zeit und den Namen des Verzeichnisses von find mit einem Tabulator (und nicht mit einem Leerzeichen) getrennt aussort -n -r |head -1 | cut -f2
- date ordnet das Verzeichnis an und gibt den gesamten Namen des zuletzt geänderten Verzeichnisses aus (auch wenn ein Leerzeichen als Standardbegrenzungsregisterkarte verwendet wird).quelle
Du kannst tun:
quelle