Ich schreibe Skript ist ksh. Sie müssen alle Verzeichnisnamen direkt unter dem aktuellen Verzeichnis finden, die nur Dateien und keine Unterverzeichnisse enthalten.
Ich weiß, dass ich die ls -alR
Ausgabe für den ersten Buchstaben im ersten Feld ( d
für ein Verzeichnis) verwenden und rekursiv analysieren kann . Ich denke, das awk
ist der beste Weg, um zu analysieren und zu finden.
Zum Beispiel eine einfache ls -al
Ausgabe im aktuellen Verzeichnis:
drwxr-xr-x 22 af staff 748 18 Mar 22:21 .
drwxr-xr-x 5 root admin 170 17 Mar 18:03 ..
-rw------- 1 af staff 3 17 Mar 16:37 .CFUserTextEncoding
drwxr-xr-x 5 af staff 170 17 Mar 17:12 Public
drwxr-xr-x 9 af staff 306 18 Mar 17:40 Sites
-rw------- 1 af staff 3 17 Mar 16:37 textd
…
Diese Ausgabe enthält 2 Verzeichnisse: Public
und Sites
. Das Verzeichnis Public
enthält keine Unterverzeichnisse, Sites
tut es aber . Es gibt 3 Unterverzeichnisse in Sites
. Ich muss also nur die Verzeichnisse wiedergeben, die keine Verzeichnisse enthalten. In meinem Fall ist dies nur Sites
.
/some/directory
der Inode # 12345678 vorhanden ist und keine Unterverzeichnisse vorhanden sind, gibt es genau zwei feste Links zu diesem Inode:/some/directory/.
und/some/directory
. Es funktioniert unabhängig davon, ob sich Dateien im Verzeichnis befinden oder nicht..
undfoo/..
haben die gleiche Inode-Nummer.)*/
stimmt mit den Unterverzeichnissen des aktuellen Verzeichnisses überein. Dies schließt symbolische Links zu Verzeichnissen ein, die Sie möglicherweise wünschen oder nicht.~(N)
Wenn Sie in ksh93 am Anfang des Musters hinzufügen , wird es zur leeren Liste erweitert, wenn keine Übereinstimmung vorliegt. Ohne dies bleibt das Muster unverändert, wenn keine Übereinstimmung vorliegt.Die folgende Funktion ksh93 listet die Unterverzeichnisse der aktuellen Verzeichnisse auf, die kein Unterverzeichnis oder keinen Link zu einem Verzeichnis enthalten.
quelle
Wenn ich Sie nicht missverstehe, möchten Sie nur Dateien im Verzeichnis finden, nicht in den Unterverzeichnissen. Wenn dies Ihre Absicht ist, ist hier die Lösung
Wenn Sie andere als normale Dateien suchen möchten (z. B. Blockgerätedateien, Zeichengerätedateien usw.), lesen Sie in der Manpage den
find
Befehl und suchen Sie auf dieser Seite nach dem Schlüsselwort type . Sie sehen verschiedene Dateitypen, einschließlich regulärer Dateien und Verzeichnisse usw.Hoffe das ist was du suchst
quelle