Bash에서 대소문자를 구분하여 파일 확장자를 제거합니다.

Bash에서 대소문자를 구분하여 파일 확장자를 제거합니다.

basenameBash 스크립트를 사용하여 파일의 접미사를 제거하고 싶습니다 . 하지만 이 명령은 대소문자를 구분하는 방식으로만 접미사를 제거합니다.

대소문자를 구분하지 않고 확장 프로그램을 제거하려면 어떻게 해야 합니까?

답변1

Bash에서 확장 기능을 제거하려면 외부 도구 없이 제거할 수 있습니다. 그런 다음 다음으로 전달하세요 basename.

$ f=/path/to/some/file.foo.bar
$ basename "${f%.*}"
file.foo

대소문자 혼합 확장:

$ f=/path/to/some/file.foo.Bar
$ basename "${f%.*}"
file.foo

여기는%문자열 조작. 의 내용 뒤에서 가장 짧게 일치하는 하위 문자열을 제거합니다 f. 는 .*대소문자에 관계없이 점과 0개 이상의 문자와 일치합니다.

답변2

매개변수 확장 사용

file=/home/johndoe/cv.DOC
basename ${file%.[Dd][Oo][Cc]}

관련 정보