Atribuindo um diretório de arquivos a uma variável

Atribuindo um diretório de arquivos a uma variável

Tenho um diretório com quase 400 arquivos e quero atribuir todos os arquivos .txt a uma única variável em um script bash que estou escrevendo. No entanto, não tenho muita certeza de como fazer isso. Estou puramente interessado nos nomes dos arquivos, não no conteúdo desses arquivos.

Responder1

Se você quiser os nomes, provavelmente será melhor atribuí-los a um array.

names=( *.txt )

Se você quiser o conteúdo então

contents="$( cat *.txt )"

Responder2

Faça algo assim. Este one-liner produz um array para todos .txtos arquivos na /root/tmpdirpasta:

[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 ~]#

Ou você pode simplesmente criar uma variável contendo nomes de arquivos 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,

PS

Ambos os exemplos procuram extensão de arquivo .txte não conteúdo. Além disso, esta localização é recursiva, você pode alterar os argumentos para que ela pesquise apenas em uma pasta.

informação relacionada