/ / Lista plików katalogu do tablicy bez rozszerzenia pliku - linux, bash, shell

Lista plików katalogu w tablicy bez rozszerzenia pliku - linux, bash, shell

Mam pliki takie jak:

abc.json
xyz.json
pdf.json

Chciałbym uzyskać taki wynik bez rozszerzenia "json":

somearray=(abc, xyz, pdf)

Odpowiedzi:

2 dla odpowiedzi № 1

Możesz to zrobić po prostu za pomocą tego:

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

Lub, jeśli szukasz tylko .json pliki, a następnie:

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

Powyższa metoda nie jest bezpieczna, jeśli masz jakiekolwiek pliki z białą spacją lub symbolem wieloznacznym (*) w nich.

Jeśli używasz Bash, możesz użyć parametrurozszerzenie w celu rozszerzenia. A to podejście jest bardziej niezawodne niż wcześniejsze - obsługuje pliki z białymi spacjami lub wieloznacznymi znakami wdzięczności:

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

Zobacz te posty:


3 dla odpowiedzi № 2

Możesz pobrać swoje pliki do tablicy z globbingiem, a następnie usunąć rozszerzenia z rozszerzeniem parametrów:

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