encuentre mi malentendido sobre este pequeño fragmento de script de shell

encuentre mi malentendido sobre este pequeño fragmento de script de shell

En realidad, tengo una carpeta que contiene varias subcarpetas con muchas imágenes en cada una.

Estoy intentando reunir todos los nombres de los archivos en cada subcarpeta en un archivo de texto (filesNames.txt) en esa subcarpeta en forma de:

Absoluta/ruta/a/cada/archivo/Nombre del archivo

Entonces, escribí un script en la carpeta principal:

#!/bin/sh

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

Mi problemaes eso:

Tengo la dirección absoluta sólo para el primer archivo de cada subcarpeta. Para el resto sólo hay nombres de archivos sin dirección absoluta:

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

Creo que está relacionado con$PWDvariable que la repito solo una vez para cada subcarpeta. ¿Cómo puedo cambiar el script en una forma adecuada?

Gracias de antemano.

Respuesta1

Un solo findcomando generará todos los archivos con ruta absoluta

find $(pwd) -type f

Respuesta2

Y si quieres hacerlo usando un script de shell puro y no quieres usar buscar, prueba este pequeño:

#!/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 

Guarde, por ejemplo, como bucle recursivo y ejecútelo en la carpeta donde desea realizar la búsqueda. Hará exactamente lo que hace el mecanismo de búsqueda u otros mecanismos recursivos, pero utilizando un bucle for, ¡y podrá personalizarlo según sus necesidades!

$./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
(...)

información relacionada