Назначение каталога файлов одной переменной

Назначение каталога файлов одной переменной

У меня есть каталог с почти 400 файлами, и я хочу назначить все файлы .txt одной переменной в скрипте bash, который я пишу. Однако я не совсем уверен, как это сделать. Меня интересуют только сами имена файлов, а не их содержимое.

решение1

Если вам нужны имена, то, вероятно, лучше всего присвоить их массиву.

names=( *.txt )

Если вам нужно содержимое, то

contents="$( cat *.txt )"

решение2

Сделайте что-нибудь вроде этого. Этот однострочный код создает массив для всех .txtфайлов в /root/tmpdirпапке:

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

Или вы можете просто создать переменную, содержащую имена файлов, разделенные символом ,:

[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,

ПС

Оба примера ищут расширение файла, .txtа не его содержимое. Плюс, этот поиск рекурсивный, вы можете изменить аргументы, чтобы он искал только в одной папке.

Связанный контент