Linux: Inhalt der Unterverzeichnisse mit dem angegebenen Namen auflisten?

7138
Dane O'Connor

Ich verwende Linux, um eine Windows-Verzeichnisstruktur zu analysieren. Die Struktur ist:

/Documents and settings /username1 /My Documents ... /username2 /My Documents ... ... 

Welchen Befehl kann ich ausführen, damit der Inhalt (und die Unterordner) aller "Eigene Dateien" -Verzeichnisse wie folgt aufgelistet sind:

/Documents and Settings/username1/My Documents/filename /Documents and Settings/username1/My Documents/subdir/filename /Documents and Settings/username2/My Documents/filename 

Grundsätzlich gibt es eine Unmenge von Benutzern, aber fast keiner hat etwas in ihrem Ordner "Eigene Dateien". Ich möchte nur den Inhalt der Benutzer finden und anzeigen, die über Dokumente verfügen.

BEARBEITEN: Jedes Verzeichnis "Benutzername" enthält viele Unterverzeichnisse. Ich möchte nur den Baum unter dem Ordner "Eigene Dateien" auflisten, dies aber für alle Benutzernamen gleichzeitig.

1

6 Antworten auf die Frage

2
KeithB

Verwenden Sie die ersten beiden Antworten und verwenden Sie find und ls -R:

Suchen Sie nach "/ Documents and settings" -name "My Documents" -exec ls -R {} \;

Dadurch werden alle die finden Eigene Dateien Verzeichnisse und Liste alles unter ihnen, mit vollen Pfadnamen. Sie benötigen die Anführungszeichen, da die Verzeichnisnamen Leerzeichen enthalten.

Edit: Eine Erklärung, wie das funktioniert. Es beginnt bei / Documents und Einstellungen und sucht nach Dateien oder Verzeichnissen, die mit My Documents übereinstimmen . Für jedes gefundene Element ersetzt es den Pfad für {} in den ls. Das \; bedeutet das Ende des Befehls.

Was macht {} \; bedeuten? Dane O'Connor vor 15 Jahren 0
dieser Befehl wirft: "fehlendes Argument für -exec" Dane O'Connor vor 15 Jahren 0
Stellen Sie sicher, dass Sie das \ haben; (Backslash-Semikolon) dort. KeithB vor 15 Jahren 0
Ah, als Sie erklärt haben, habe ich bemerkt, dass zwischen '{}' und '\;' kein Leerzeichen vorhanden ist. Perfekt. Ich gehe davon aus, dass '\;' soll verhindern, dass sich die Hülle ausdehnt; Dane O'Connor vor 15 Jahren 0
Shoot, hier werden alle Inhalte von Documents und Settings aufgelistet Dane O'Connor vor 15 Jahren 0
2
iddqd

Nur um die Sammlung hinzuzufügen, ls ist -R nicht wirklich die schöne Ausgabe erzeugen, so verwende ich Baum - Befehl statt

find "/Documents and settings" -name "My Documents" -exec tree -f -i --noreport {} \; 
1
linux_is_for_desktop
ls -R path_to_your_dir 

oder

ls -lR path_to_your_dir 

für eine bessere Sicht

Beste Sicht wird jedoch mit erreicht

find path_to_your_dir 

HINWEIS: -R bedeutet rekursiv

siehe meine Bearbeitung, ich brauche nur den Baum unter jedem meiner Dokumente-Ordner. Nicht der Baum unter Dokumente und Einstellungen. Dane O'Connor vor 15 Jahren 0
0
lyarwood

Sie können den Befehl # find your_dir verwenden

siehe meine Bearbeitung, ich brauche nur den Baum unter jedem meiner Dokumente-Ordner. Nicht der Baum unter Dokumente und Einstellungen. Dane O'Connor vor 15 Jahren 0
0
wallenborn

Wenn Sie den Pfadnamen sehen möchten und nicht die vollständige rekursive -R-Auflistung haben möchten, scheint dies ungefähr das zu tun, was Sie möchten. Es ist jedoch etwas unklar:

find . -type d -name '*Documents' ! -empty | (while read d; do echo $d; ls -la $d; done) 
0
nagul

Wenn Sie die rekursive Liste der Dateien und Ordner unter Dokumente und Einstellungen / Benutzer / Eigene Dateien anzeigen möchten :

find Documents\ and\ Settings/*/My\ Documents -print 

Wenn Sie nur die Dateien und Ordner direkt unter Dokumente und Einstellungen / Benutzer / Eigene Dateien haben möchten:

ls -dr Documents\ and\ Settings/*/My\ Documents/* 

Ersteres enthält eine Datei wie Dokumente und Einstellungen / Benutzer / Eigene Dateien / Verzeichnis1 / Datei1, während letztere nur Dokumente und Einstellungen / Benutzer / Eigene Dateien / Verzeichnis1 aufführt