for file in *.pdf ; do
newname=${file%\\.\*}
done
%\.*
파일 확장자를 제거하는 방법을 이해할 수 없습니다 . 누군가가 방법을 안내해 줄 수 있습니까?
답변1
%\.*
파일 확장자를 제거하는 방법을 모르겠습니다.
그렇지 않기 때문입니다. :) 작성한 코드가 잘못되어 유용한 기능을 수행하지 못합니다.
${variable%pattern}
허용 $variable
하고 제거 하는 표준 쉘 확장이 있습니다.가장 짧은끝에 일치하는 블록이 있습니다 pattern
(비슷한 확장자가 있으며 ${variable%%pattern}
제거됨).가장 긴성냥). 그러나 pattern
이는 쉘 글로브여야 하며 위 코드 작성자는 이를 정규 표현식으로 의도한 것 같습니다.
올바른 형식은 다음과 같습니다. ${file%.*}
.오른쪽의 모든 항목을 제거하면 작동합니다.맨 오른쪽가리키다. 대신 ${file%%.*}
오른쪽에 있는 모든 항목을 삭제하세요.맨 왼쪽가리키다. 예를 들어, if 는 file=/some/very.long.directory.name/foo.pdf
로 ${file%.*}
확장되고 /some/very.long.directory.name/foo
로 ${file%%.*}
확장됩니다 /some/very
.