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
。