
次のファイルから拡張子とプレフィックスを削除したいと思います。
awstats.www.test1.com.conf
awstats.www.test2.com.conf
awstats.www.test3.com.conf
awstats.
とを削除し.conf
、ファイルはwww.test1.com
そのままにしてください。どうすればいいですか?
答え1
ファイルと同じディレクトリにあるとします。
for name in awstats.*.conf; do
basename "${name#awstats.}" .conf
done
ループ内のコードは最初にプレフィックスを削除し、次にawstats.
標準引数置換を使用してサフィックスを削除します。$name
basename
.conf
以下を呼び出さずに2つの手順で実行することもできますbasename
。
for name in awstats.*.conf; do
newname=${name#awstats.} # trim off prefix
newname=${newname%.conf} # trim off suffix
printf '%s\n' "newname"
done
これら2つのループはファイル名を変更しません。
答え2
私はrename
(perl-rename
一部のシステムでは他のシステムでのみrename
)ここが最も簡単だと思います。
rename 's/^awstats\.//;s/\.conf$//' awstats.*.conf
正規表現の説明:
s/^awstats\.//
awstats.
行(ファイル名)の先頭では何も変更しないでください。s/\.conf$//
.conf
行末(ファイル名)を空白に置き換えます。
-n
テストを実行するにはこのオプションを使用してください。