シェルスクリプトでファイルの尾番号を切り取る方法は?

シェルスクリプトでファイルの尾番号を切り取る方法は?

次のファイルがあります。合計4つのファイルがあります:

cert1.pem chain1.pem fullchain1.pem privkey1.pem

各ファイルの尾番号を切り取りたい(1ここ)。シェルスクリプトを使用してどのように自動化できますか?私はいくつかのコマンドに精通していますが、この種のバッチ処理を処理するためのシェルスクリプトを書くのはうまくいかないと思います。

ベストアンサー1

末尾の数字が単一の数字で、両方とも.pemファイルの場合は、パラメータ拡張を使用して数字と拡張子を削除してから拡張子を置き換えることができます。

for file in cert1.pem  chain1.pem  fullchain1.pem  privkey1.pem
do
  mv "$file" "${file%%?.pem}.pem"
done

%%パラメータ拡張は、単一文字()のうち最も長い末尾の一致を削除するように機能し?.pem完了すると手動で.pem最後に再追加します。

certX.pemこれは、またはfullchain-.pemその?文字が単一の文字に拡張されるなどのファイル名も変更されることに注意してください。

上記の例では、名前を変更するファイルを手動でリストしたため、これはより安全になりました。同様のアプローチを使用することもできます。

for file in *1.pem
do
  mv "$file" "${file%%?.pem}.pem"
done

.... を1.pem使用してファイルを明示的に繰り返します。

設定:

$ ls
cert1.pem  chain1.pem  fullchain1.pem  privkey1.pem

実装する:

$ for file in cert1.pem  chain1.pem  fullchain1.pem  privkey1.pem
  do 
    mv "$file" "${file%%?.pem}.pem"
  done

結果:

$ ls
cert.pem  chain.pem  fullchain.pem  privkey.pem

おすすめ記事