2016-08-05 23 views
0

Ich benutze jetzt die Bash-Skript unten, um Datei Auflistung in jedem Level 2 Tiefe Verzeichnisse erstellen und als Textdatei in jedem bestimmten Ordner.Wie verwende ich die Tiefe Level 2 oder Maxdepth als Ausgabe Textdatei für meine Bash-Skript unter

Aber kann ich nenne es nur als „File.txt“ Wie die Stufe 2 Tiefe Verzeichnis als Ausgabetextdateinamen verwenden

z.B. während Liste die Dateien in/users/bin/die Ausgabedatei sollte namens "bin.txt"

hier ist der Code, den ich verwende.

#!/bin/bash 

    while IFS= read -r -d '' folder; do 

    echo $folder find "$folder" -type f > "$folder"/File.txt 

    done < <(find . -maxdepth 2 -mindepth 2 -type d -print0) 

Antwort

0

Sie haben für (1) Dateien im vorliegenden Arbeitsverzeichnis zu berücksichtigen (die keine Pfadkomponente neben '.' haben), und (2) den Rest der Dateien in der Ebene 2 Verzeichnisse. Wenn Sie beispielsweise Ihre Liste der Dateien im aktuellen Verzeichnis auf pwd.txt und jede Datei in den Verzeichnissen der Ebene 2 in Dateien mit den entsprechenden Verzeichnisnamen ausgeben möchten (z. B. ./dir1/file_a.txt in dir1.txt), könnten Sie in etwa Folgendes tun der Körper Ihrer Schleife:

tmp="${folder%/*}"      ## remove filename 
lvl2name="${tmp##*/}"      ## remove leading path components 
[[ $lvl2name = '.' ]] && lvl2name="pwd" ## handle files in pwd to pwd.txt 
echo $folder find "$folder" -type f >> "$lvl2name.txt" 

Es liegt an Ihnen, alle vorhandenen "$lvl2name.txt" Dateien vor jeder folgenden Ausführung des Skripts zu verkürzen. Sie könnten einen vorherigen Anruf an find . -maxdepth 2 -type d ... bevor Sie Ihre Datei-Schleife eingeben, um die Verzeichnisnamen oder etwas Ähnliches zu erhalten.

Probieren Sie es aus und lassen Sie mich wissen, ob Sie Fragen haben.