Asignar un directorio de archivos a una variable

Asignar un directorio de archivos a una variable

Tengo un directorio con casi 400 archivos y quiero asignar todos los archivos .txt a una sola variable en un script bash que estoy escribiendo. Sin embargo, no estoy muy seguro de cómo hacerlo. Estoy puramente interesado en los nombres de los archivos en sí, no en el contenido de dichos archivos.

Respuesta1

Si desea los nombres, probablemente sea mejor que los asigne a una matriz.

names=( *.txt )

Si quieres el contenido entonces

contents="$( cat *.txt )"

Respuesta2

Haz algo como esto. Esta frase produce una matriz para todos .txtlos archivos de /root/tmpdirla carpeta:

[root@localhost ~]# export LIST=() ; for file in `find /root/tmpdir -name *.txt -exec readlink -e '{}' \;` ; do LIST+=($file) ; done
[root@localhost ~]# echo ${LIST[*]}
/root/tmpdir/newdir/file.txt /root/tmpdir/file.txt
[root@localhost ~]#

O simplemente puede crear una variable que contenga nombres de archivos separados por ,:

[root@localhost ~]# export LIST; for file in `find /root/tmpdir -name *.txt -exec readlink -e '{}' \;` ; do LIST=$LIST$file, ; done
[root@localhost ~]# echo $LIST
/root/tmpdir/newdir/file.txt,/root/tmpdir/file.txt,

PD

Ambos ejemplos buscan la extensión del archivo, .txtno el contenido. Además, esta búsqueda es recursiva, puede cambiar los argumentos para que busque dentro de una sola carpeta.

información relacionada