¿Leer la lista de texto en una matriz dinámica?

¿Leer la lista de texto en una matriz dinámica?

Estoy tratando de automatizar algunas cosas del trabajo y esto incluye muchas generaciones de carpetas, pero estaba pensando en usar una matriz dinámica para hacer esto, déjeme saber cómo suena.

La primera parte de mi script es exportar una lista de directorios usando:

ls /home/USER/Downloads/ > "/home/USER/Desktop/scripts/FolderList.txt"

y da el resultado esperado:

Folder With Some Long Title
Folder With Another Long Title

En este ejemplo solo di (2), pero podría haber más de 1500 carpetas y ya escribí los comandos para crear las otras carpetas en mi servidor y nombrarlas automáticamente según el nombre de la carpeta original, pero el problema que tengo es Quiero que mis scripts indexen todas las carpetas y ejecuten mis comandos (hay alrededor de 8 que en su mayoría son manipulaciones de cadenas y demás). Entonces, estaba pensando en obtener el recuento de la cantidad de elementos en el directorio, luego escribirlos en el archivo de texto mencionado anteriormente y luego usar un bucle FOR para ejecutar esa cantidad de veces que contendrá mis aproximadamente 8 comandos. ¿Alguna idea o idea mejor? Puedo obtener el recuento usando:

wc -l FolderList.txt | awk '{ print $1 }'

Pero no estoy seguro de cómo crear o administrar una matriz dinámica y usarla con el bucle for para indexar mis comandos.

Aquí hay algunos de los scripts que lo acompañan, actualmente algunos comentados para pruebas modulares:

#TestString="Customer Info (YEAR) [PMNAME] [OWNERNAME] [EETYPE]"
cd "/home/USER/Downloads/"
ls /home/USER/Downloads/ > "/home/USER/Desktop/scripts/FolderList.txt"
wc -l FolderList.txt | awk '{ print $1 }'

#CUSTINFO=${TestString/(*)*}
#YEAR=$(grep -o '(.*)' <<<"$TestString")
#RESO3=$(grep -o '\[.*\]' <<<"$TestString")
#RESO2=${RESO3//\[PMNAME\]/}
#RESO_FINAL=${RESO2//\[EETYPE\]/}
#FULL_NAME=$TITLE_FINAL$CUSTINFO$YEAR
#mv "/home/USER/Downloads/$DOWNLOAD_NAME" "/home/USER/Downloads/$FULL_NAME"
#for f in */* ;do fp=$(dirname "$f"); ext="${f##*.}" ; mv "$f" "$fp"/"$fp"."$ext" ;done

Respuesta1

Siguiendo los comandos y comentarios, parece que lo que quieres hacer es:

for TestString in /home/USER/Downloads/*
do 
    #CUSTINFO=${TestString/(*)*}
    #YEAR=$(grep -o '(.*)' <<<"$TestString")
    #RESO3=$(grep -o '\[.*\]' <<<"$TestString")
    #RESO2=${RESO3//\[PMNAME\]/}
    #RESO_FINAL=${RESO2//\[EETYPE\]/}
    #FULL_NAME=$TITLE_FINAL$CUSTINFO$YEAR
    #mv "/home/USER/Downloads/$DOWNLOAD_NAME" "/home/USER/Downloads/$FULL_NAME"
    #for f in */* ;do fp=$(dirname "$f"); ext="${f##*.}" ; mv "$f" "$fp"/"$fp"."$ext" ;done
done

El bucle for externo recorre los archivos /home/USER/Downloads/(mediante expansión con comodines), estableciendo TestStringcada nombre de archivo por turno.

información relacionada