/ / Список файлів каталогу в масив без розширення - linux, bash, shell

Список файлів каталогу в масив без розширення - linux, bash, shell

У мене є такі файли:

abc.json
xyz.json
pdf.json

Я хотів би отримати такий результат без розширення "json":

somearray=(abc, xyz, pdf)

Відповіді:

2 для відповіді № 1

Ви можете зробити це просто:

some_array=( $(ls | sed "s/.json$//") )

Або, якщо ви шукаєте тільки .json файли, а потім:

some_array=( $(ls | grep ".json$" | sed "s/.json$//") )

Наведений вище спосіб не є безпечним, якщо у вас є будь-які файли з пробілом або підстановою (*) у них.

Якщо ви використовуєте Bash, то ви можете використовувати параметррозширення для продовження. І цей підхід є більш надійним, ніж попередні - він графічно обробляє файли з пробілами або шаблоном.

declare -a some_array
for file in *.json; do
some_array+=( "${file%.json}" )
done

Перегляньте ці повідомлення:


3 для відповіді № 2

Ви можете отримати ваші файли в масив з globbing, а потім видалити розширення з розширенням параметра:

$ arr=(*.json)
$ declare -p arr
declare -a arr="([0]="abc.json" [1]="pdf.json" [2]="xyz.json")"
$ arr=("${arr[@]%.json}")
$ declare -p arr
declare -a arr="([0]="abc" [1]="pdf" [2]="xyz")"