Как хранить все файлы с тем же суффиксом в таблице?

Я создаю небольшой скрипт оболочки, и я хочу хранить все файлы с тем же суффиксом в таблице.

Мне нужно что-то вроде этого:

path=/home/user/Documents
suffix="_suffix.txt"

, а затем функцию, которая создает файлы имен таблиц и заполняет ее файлом в $ path суффикс $ suffix. результат:

echo files[0]

-> /home/user/Documents/project_suffix.txt

echo files[1]

-> /home/user/Documents/html_suffix.txt

echo files[2]

-> /home/user/Documents/jokes_suffix.txt. и т. д.

Я не хочу иметь в своем списке другие файлы, такие как «budget.txt»

Спасибо за ваши ответы!

)
1
задан 26 February 2015 в 21:45

1 ответ

То, что вы называете таблицей, обычно называется массивом или картой. В bash для создания такого массива:

path="/home/user/Documents"
suffix="_suffix.txt"
files=( "$path"/*"$suffix" )

* представляет собой массив , который расширяется оболочкой ко всем соответствующим именам файлов (которые имеют $path перед ним и $suffix после). Скобки (()) преобразуют расширенные имена файлов в массив.

Затем вы можете получить доступ к каждому элементу (индексируется от 0, а не 1), используя "${files[0]}", "${files[1]}" и т. Д.

Например:

$ path=/tmp
$ suffix=_amd64.deb
$ files=( "$path"/*"$suffix" )
$ echo "${files[1]}" "${files[0]}" 
/tmp/vim-athena_7.4.640-1~ppa1~t_amd64.deb /tmp/vim_7.4.640-1~ppa1~t_amd64.deb
2
ответ дан 23 May 2018 в 22:53
  • 1
    почему не использовать files=( "/home/user/Documents/*_suffix.txt" )? – αғsнιη 26 February 2015 в 21:58
  • 2
    @KasiyA Предположим, что путь и суффикс являются аргументами сценария или что-то в этом роде. (Кроме того, цитата из * будет препятствовать глобализации.) – muru 26 February 2015 в 21:59
  • 3
    Тогда в этом случае files=( "$1"/*"_$2" ). [F2] для пути и $2 для суффикса – αғsнιη 26 February 2015 в 22:01
  • 4
    @KasiyA * вне цитат! – muru 26 February 2015 в 22:01

Другие вопросы по тегам:

Похожие вопросы: