
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
-execdir
fü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 find
Weitere Informationen finden Sie unter.