Ruft eine Liste aller Dateien in einem Ordner und Unterordner in einer Datei ab

28

Wie erhalte ich eine Liste aller Dateien in einem Ordner, einschließlich aller Dateien in allen Unterordnern, und füge die Ausgabe in eine Datei ein?

Namshum
quelle

Antworten:

39

Sie können dies über die Befehlszeile tun, indem Sie die Option -R (rekursiv) verwenden und dann die Ausgabe in eine Datei umleiten.

ls -R > filename1

Dadurch wird im aktuellen Verzeichnis eine Datei mit dem Namen Dateiname1 erstellt, die eine vollständige Verzeichnisliste des aktuellen Verzeichnisses und aller darunter liegenden Unterverzeichnisse enthält.

Sie können andere Verzeichnisse als das aktuelle auflisten, indem Sie den vollständigen Pfad angeben, z.

ls -R /var > filename2

listet alles in und unter / var auf und legt die Ergebnisse in einer Datei mit dem Namen filename2 im aktuellen Verzeichnis ab. Dies funktioniert für Verzeichnisse, die einem anderen Benutzer gehören, einschließlich root, solange Sie Lesezugriff auf die Verzeichnisse haben.

Mit dem Befehl sudo können Sie auch Verzeichnisse auflisten, auf die Sie keinen Zugriff haben, z. B. / root. z.B:

sudo ls -R /root > filename3

Führt alles in / root auf und fügt die Ergebnisse in eine Datei namens filename3 im aktuellen Verzeichnis ein. Da die meisten Ubuntu-Systeme nichts in diesem Verzeichnis haben, wird Dateiname3 nichts enthalten, aber es würde funktionieren, wenn es so wäre.

Hersteller4
quelle
Vielleicht könnte man der Person sagen, dass sie zuerst in das Verzeichnis schreiben soll, um zu antworten. Dies funktioniert auch gut, wenn ich das Verzeichnis besitze, aber wenn ich in einem Verzeichnis versuche, das beispielsweise root gehört, habe ich die übliche Erlaubnis verweigert und sudo gefolgt von Ihrem Befehl gab auch die Erlaubnis verweigert. Gibt es eine Abhilfe, ohne sich als root anzumelden?
Damien
Nun, ich habe "aktuelles" Verzeichnis gesagt. Die richtige Verwendung von CDs könnte Gegenstand einer anderen Frage sein, und ich bin mir sicher, dass dies der Fall war. Sie können Verzeichnisse auflisten, deren Eigentümer root ist, solange Sie Lesezugriff darauf haben. Verzeichnisse im Besitz von root, auf die der Benutzer Lesezugriff hat, können mit ls -R aufgelistet werden. Es ist schwer vorstellbar, warum Sie Verzeichnisse im Besitz von root auflisten möchten, auf die Sie keinen Lesezugriff haben, aber sudo funktioniert tatsächlich, wenn Sie den vollständigen Pfad angeben. Ich füge Beispiele für beide hinzu, aber ohne die Verwendung von CD.
Fabricator4
8

Baum Baum installieren

Eine Alternative zu rekursiv lsist das Befehlszeilentool, treedas eine Reihe von Optionen zum Anpassen des angezeigten Ausgabeformats bietet. Weitere Informationen zu allen Optionen finden Sie in der Manpage zum Baum .

Takkat
quelle
7

Verwenden Sie einfach den findBefehl mit dem Verzeichnisnamen. Verwenden Sie beispielsweise, um die Dateien und alle Dateien in Ordnern in Ihrem Ausgangsverzeichnis anzuzeigen

find ~

Überprüfen Sie die Handbuchseite zum Suchen des findBefehlsManpage-Symbol

Überprüfen Sie auch die Suche nach GNU-Infoseiten, indem Sie den info findBefehl in einem Terminal verwenden.

Anwar
quelle
Dies ist der mächtigste Ansatz. findverfügt über viele Parameter zum Anpassen des Ausgabeformats und der Dateiauswahl.
Pauljohn32
Das ist meiner Meinung nach der beste Ansatz. Einfach und praktisch. Könnte auch tun, $ find . > outputwenn es viele Verzeichnisse gibt.
Felippe
4

Ebenfalls:

gvfs-tree /path/to/folder/

gibt Ihnen das gleiche wie Baum mit anderen Zeichen für die Zeilen.

tree -a

um auch versteckte Dateien anzuzeigen

tree -i

Zeilen nicht anzeigen

Pili Garcia
quelle
1
  1. Wechseln Sie zu dem Ordner, aus dem Sie eine Inhaltsliste abrufen möchten.
  2. Wählen Sie die gewünschten Dateien in Ihrer Liste aus ( Ctrl+, Awenn Sie den gesamten Ordner benötigen).
  3. Kopieren Sie den Inhalt mit Ctrl+ C.
  4. Öffne gedit und füge den Inhalt mit Ctrl+ ein V. Es wird als Liste eingefügt und Sie können die Datei dann speichern.

Diese Methode enthält jedoch keinen Unterordner, sondern nur Inhalt.

Roy van Arem
quelle
1

Sie können auch das GUI-Gegenstück zu Takkats treeVorschlag verwenden, nämlich Baobab . Es wird zum Anzeigen von Ordnern und Unterordnern verwendet, häufig zum Analysieren der Datenträgernutzung. Sie können es bereits installiert haben, wenn Sie einen GNOME-Desktop verwenden.

sudo apt-get install baobab

Sie können einen Ordner auswählen und auch alle Unterordner anzeigen, während Sie gleichzeitig die Größe der Ordner und deren Inhalt abrufen, wie in der Abbildung unten dargestellt. Klicken Sie einfach auf den kleinen Abwärtspfeil, um einen Unterordner in einem Ordner anzuzeigen. Es ist sehr nützlich, um einen schnellen Einblick in Ihre Ordner zu erhalten und sichtbare Listen zu erstellen. Derzeit können sie jedoch nicht in eine Datei exportiert werden. Es wurde jedoch als Feature bei Launchpad angefordert . Sie können es sogar verwenden, um das Root-Dateisystem anzuzeigen, wenn Sie es verwenden gksudo baobab.

(Sie können auch eine Liste der Dateien mit ihrer Größe abrufen, indem Sie ls -shR ~/myfolderdiese in eine Datei exportieren.)

Geben Sie hier eine Bildbeschreibung ein

Peter Mortensen
quelle
Das OP wollte die Ergebnisse in einer Datei, vermutlich um etwas anderes damit zu tun. Obwohl Baobab ein gutes Werkzeug ist, scheint es die Anforderungen der ursprünglichen Frage des OP nicht zu erfüllen.
Fabricator4
@ fabricator4 Ich habe auch die Option ls hinzugefügt, da Baobab derzeit keine Liste ausgeben kann.