So erstellen Sie eine neue Datei, die den Dateinamen und die Quellverzeichnisinformationen bereitstellt

So erstellen Sie eine neue Datei, die den Dateinamen und die Quellverzeichnisinformationen bereitstellt

Ich habe ein Verzeichnis, das so viele Unterverzeichnisse und Dateien enthält. Ich möchte eine Datei erstellen, die jeden Dateinamen und die Quellverzeichnispfadinformationen enthält

Zum Beispiel:

  • Ich habe einen Ordner mit dem Namen sample, der die Unterverzeichnisse sample1 und sample2 enthält
  • Ich habe ex1.csv, ex2.csv im Beispiel 1 und ex3.csv, ex4.csv im Verzeichnis Beispiel 2

Ich muss eine Textdatei (oder) CSV-Datei erstellen, die die Informationen auf folgende Weise enthält

Beispiel1.csv,Beispiel/Beispiel1

Beispiel 2.csv,Beispiel/Beispiel1

Beispiel 3.csv,Beispiel/Beispiel2

Es wäre toll, wenn mir jemand beim Erstellen der Skriptdatei unter Unix helfen könnte

Dank im Voraus

Antwort1

Bei einer Struktur wie

$ tree sample
sample
├── sample1
│   ├── ex1.csv
│   └── ex2.csv
└── sample2
    ├── ex3.csv
    └── ex4.csv

2 directories, 4 files

Sie können verwenden

$ find sample -type f -printf '%f,%h\n'
ex2.csv,sample/sample1
ex1.csv,sample/sample1
ex3.csv,sample/sample2
ex4.csv,sample/sample2

man findDie relevanten -printfFormatbezeichner sind :

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

       %h     Leading directories of file's name (all but the last ele‐
              ment).  If the file name contains no slashes (since it is
              in the current directory) the  %h  specifier  expands  to
              ".".

Wenn Sie die Ergebnisse in einer Datei haben möchten, leiten Sie die Befehlsausgabe einfach mit dem >Operator um, z. B.

find sample -type f -printf '%f,%h\n' > filelist

verwandte Informationen