/ / Zoznam súborov adresára do poľa bez prípony súboru - linux, bash, shell

Zoznam súborov adresára do poľa bez prípony súboru - linux, bash, shell

Mám súbory ako:

abc.json
xyz.json
pdf.json

Chcem získať takýto výsledok bez rozšírenia „json“:

somearray=(abc, xyz, pdf)

odpovede:

2 pre odpoveď č. 1

Môžete to urobiť jednoducho:

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

Alebo, ak len hľadáte .json súborov, potom:

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

Vyššie uvedená metóda nie je bezpečná, ak máte nejaké súbory, ktoré majú medzery alebo zástupný znak (*) v nich.

Ak používate Bash, potom môžete použiť parameterrozšírenie, aby sa rozšírenie. A tento prístup je robustnejší ako tie skoršie - spracováva súbory s bielymi medzerami alebo zástupným znakom:

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

Pozrite si tieto príspevky:


3 pre odpoveď č. 2

Svoje súbory môžete dostať do poľa s globbingom a potom odstrániť rozšírenia s rozšírením parametrov:

$ 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")"