
Ich möchte das Suffix einer Datei mithilfe basename
eines Bash-Skripts entfernen. Der Befehl entfernt das Suffix allerdings nur unter Beachtung der Groß- und Kleinschreibung.
Wie kann ich eine Erweiterung ohne Berücksichtigung der Groß-/Kleinschreibung entfernen?
Antwort1
Wenn Sie eine Erweiterung in Bash entfernen möchten, können Sie dies ohne externe Tools tun. Übergeben Sie sie dann an basename
:
$ f=/path/to/some/file.foo.bar
$ basename "${f%.*}"
file.foo
Mit einer Erweiterung in gemischter Groß- und Kleinschreibung:
$ f=/path/to/some/file.foo.Bar
$ basename "${f%.*}"
file.foo
Hier %
istZeichenfolgenmanipulation. Es wird die kürzeste passende Teilzeichenfolge von dem entfernt, was in steht f
. Das .*
entspricht einem Punkt und null oder mehr Zeichen, unabhängig von der Groß-/Kleinschreibung.
Antwort2
Verwenden der Parametererweiterung
file=/home/johndoe/cv.DOC
basename ${file%.[Dd][Oo][Cc]}