finde mein Missverständnis über dieses kleine Stück Shell-Skript

finde mein Missverständnis über dieses kleine Stück Shell-Skript

Tatsächlich habe ich einen Ordner, der mehrere Unterordner mit jeweils zahlreichen Bildern enthält.

Ich versuche, alle Namen der Dateien in jedem Unterordner in einer Textdatei (filesNames.txt) in diesem Unterordner in folgender Form zu sammeln:

Absoluter/Pfad/zu/jeder/Datei/Dateiname

Also habe ich ein Skript im übergeordneten Ordner geschrieben:

#!/bin/sh

for dir in "$PWD"/*/; do
arr=( "$dir"* )
cd "$dir"
printf "%s 1\n" "$PWD/${arr[@]##*/}" > "$dir"filesNames.txt
cd ..
done

Mein Problemist das:

Ich habe die absolute Adresse nur für die erste Datei in jedem Unterordner. Für den Rest gibt es nur Dateinamen ohne absolute Adresse:

 /run/media/parent_folder/subfolder/filename1.png
 filename2.png
 filename3.png
 ...

Ich denke, es hängt damit zusammen$PWDVariable, die ich für jeden Unterordner nur einmal durchlaufe. Wie kann ich das Skript in eine geeignete Form ändern?

Dank im Voraus.

Antwort1

Ein einziger findBefehl gibt alle Dateien mit absolutem Pfad aus

find $(pwd) -type f

Antwort2

Und wenn Sie das mit einem reinen Shell-Skript machen und find nicht verwenden möchten, versuchen Sie es mit diesem Kleinen:

#!/bin/bash
#Simple bash recursive loop search - Luciano A. Martini =) 
nextdir(){
for f in *; do 
   if [ -d "$f" ] && [ ! -L "$f" ]; then
        #echo "Inside folder: $PWD/$f"
        nextdir "$f"
        cd ..
        continue
   else
        echo "$PWD/$f"
   fi
done 
}
#call the function for the first time...
nextdir 

Speichern Sie es beispielsweise als rekursive Schleife und führen Sie es in dem Ordner aus, in dem Sie die Suche durchführen möchten. Es wird genau das tun, was Find oder andere rekursive Mechanismen tun, allerdings mit einer For-Schleife, und Sie können es an Ihre Bedürfnisse anpassen!

$./recursive-loop
/home/luciano/readme.txt
/home/luciano/images/a.bmp
/home/luciano/texts/a.txt
/home/luciano/texts/b.txt
/home/luciano/texts/music/lyrics.txt
(...)

verwandte Informationen