Schreiben von Dateinamen aus Unterverzeichnissen in eine CSV-Datei in Linux

Schreiben von Dateinamen aus Unterverzeichnissen in eine CSV-Datei in Linux

Zuvor habe ich eine sehr ähnliche Frage gestellt, aber es war nur für ein UnterverzeichnisSchreiben von Dateien in einem Unterverzeichnis in eine CSV-Datei und Speichern im übergeordneten Verzeichnis in der Linux-Befehlszeile. Ich habe ein Verzeichnis namens „dir“ und es enthält 5 Unterverzeichnisse, sub1, sub2, ... sub5. Jedes Unterverzeichnis enthält viele Dateien. Ich möchte eine Liste der Dateien aus allen Unterverzeichnissen in eine CSV-Datei schreiben und sie mit einer Befehlszeile unter Linux im Verzeichnis „dir“ speichern. Mein Code macht das, außer dass ich nur die Dateinamen (Name1, Name2 usw.) möchte, aber er schreibt die vollständigen Dateinamen mit Pfad (./sub1/name1, ./sub1/name2 usw.). Die Befehlszeile, die ich im Ordner „dir“ verwende, ist:

dir$ find . -type f  > names.csv

Antwort1

Da Sie Ihre Frage mit "Linux" markiert haben, gehe ich davon aus, dass Sie GNU haben find. In diesem Fall können Sie verwenden

find . -type f -printf '%f\n' > names.csv 

Aus man find:

          %f     File's  name  with  any leading directories removed (only
                 the last element).

Antwort2

dir$ find . -type f -execdir basename {} \; > names.csv

Erläuterung

  • -execdirführt für jedes Ergebnis den folgenden Befehl aus.
  • basename {} \;Entfernen Sie den Teil vor dem letzten /. Die {}Ersatzzeichen für jedes gefundene Verzeichnis. man findWeitere Informationen finden Sie unter.

verwandte Informationen