Jak uzyskać rozszerzenie pliku z bash? Oto, co próbowałem:
filename=`basename $filepath`
fileext=${filename##*.}
W ten sposób mogę uzyskać rozszerzenie bz2
ścieżki /dir/subdir/file.bz2
, ale mam problem ze ścieżką /dir/subdir/file-1.0.tar.bz2
.
Wolę rozwiązanie wykorzystujące tylko bash bez zewnętrznych programów, jeśli jest to możliwe.
Aby wyjaśnić moje pytanie, tworzyłem skrypt bash, aby wyodrębnić dowolne archiwum za pomocą jednego polecenia extract path_to_file
. Sposób wyodrębnienia pliku jest określany przez skrypt na podstawie jego typu kompresji lub archiwizacji, którym mogą być .tar.gz, .gz, .bz2 itp. Myślę, że powinno to obejmować manipulację ciągami, na przykład jeśli otrzymam rozszerzenie, .gz
to ja powinien sprawdzić, czy ma on .tar
wcześniej ciąg .gz
- jeśli tak, rozszerzenie powinno być .tar.gz
.
.tar.bz2