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 .txt
os arquivos na /root/tmpdir
pasta:
[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 .txt
e não conteúdo. Além disso, esta localização é recursiva, você pode alterar os argumentos para que ela pesquise apenas em uma pasta.