ファイル名を一括変更する必要があります。私が見た他の質問では、問題は正しく解決されませんでした。私のファイル名は決定的に生成されるため、名前がどのように割り当てられるかを予測することはできません。私はそれがNORMAL
で始まり終わるということを知っています-lib*
。その間のすべてを文字列に変更したいと思いますX
。例えば、
| | |-- NORMAL_H_LS-A7-A0CE-10A-01D-A017-09-lib1.concordant
| | |-- NORMAL_H_LS-A7-A0CE-10A-01D-A017-09-lib1.deletion
| | |-- NORMAL_H_LS-A7-A0CE-10A-01D-A017-09-lib1.divergent
| | |-- NORMAL_H_LS-A7-A0CE-10A-01D-A017-09-lib1.inversion
| | |-- NORMAL_H_LS-A7-A0CE-10A-01D-A017-09-lib1.translocation
| | |-- NORMAL_H_LS-A7-A0CE-10A-01D-A017-09-lib4.concordant
| | |-- NORMAL_H_LS-A7-A0CE-10A-01D-A017-09-lib4.deletion
| | |-- NORMAL_H_LS-A7-A0CE-10A-01D-A017-09-lib4.divergent
| | |-- NORMAL_H_LS-A7-A0CE-10A-01D-A017-09-lib4.insertion
| | |-- NORMAL_H_LS-A7-A0CE-10A-01D-A017-09-lib4.inversion
| | |-- NORMAL_H_LS-A7-A0CE-10A-01D-A017-09-lib4.translocation
だからこんな形になることもあるでしょうがrename "s/something/X/"
、正規表現をどのように使うのか分からないのでどんな形にすべきかわかりません。
答え1
便利なPerlドライバがrename
すべてのディストリビューションで常に利用できるわけではありません。たとえば、FedoraとCentOS(そしておそらくRedHat)はデフォルトのrename
ユーティリティを使用してデフォルトの検索と置換のみを実行します。
運が悪く、これらのいずれかが利用できない場合は、次の方法が役に立ちます。
for oldname in *; do
newname=$(echo "$oldname" | sed -e 's/\(NORMAL\).*\(-lib.*\)/\1X\2/')
mv "$oldname" "$newname"
done
答え2
rename
幸運にもアクセスできる場合は、次の点で十分です。
rename 's/(NORMAL).*(-lib)/$1X$2/' *
答え3
Debianおよびその派生プログラムrename
(Ubuntu、Mintなど)のスクリプトは、最初の引数が古い名前を新しい名前に変換するPerl式であるPerlスクリプトです。このスクリプトを使用すると、次のことができます。
rename 's/.*-lib/NORMAL_X-lib/' NORMAL_*-lib*
これs
オペレーター実行する正規表現代替。インターネットには、次のような多くの正規表現チュートリアルがあります。1。.*-lib
最後に表示されるまで文字列を一致させるので-lib
(.*
すべての文字列と一致する)s/.*-lib/NORMAL_X-lib/
その部分NORMAL_blahblah-lib
をNORMAL_X-lib
。
LinuxディストリビューションがDebianから派生していない場合、このrename
ユーティリティは実際の作業を実行するのにほとんど適していません。代わりにシェルループを使用できます。
for x in NORMAL_*-lib*; do
mv "$x" "NORMAL_X-lib${x##*-lib}"
done
${x##*-lib}
これは変数の値からx
最後の項目を引いたものです-lib
。これは標準ですパラメータ拡張通事論。
これはzshで最も簡単です。zmv
機能。autoload -U zmv
自分のものを入力する.zshrc
か、コマンドラインで一度実行してから実行します。
zmv 'NORMAL_*-(lib*)' 'NORMAL_X-$1'
答え4
あなたは使用を検討することができます周りを見てくださいすなわち(?<=NORMAL).*?(?=-lib)
$ rename -v -n -- 's/(?<=NORMAL).*?(?=-lib)/X/' *
NORMAL_H_LS-A7-A0CE-10A-01D-A017-09-lib4.insertion renamed as NORMALX-lib4.insertion
NORMAL_H_LS-A7-A0CE-10A-01D-A017-09-lib4.inversion renamed as NORMALX-lib4.inversion
NORMAL_H_LS-A7-A0CE-10A-01D-A017-09-lib4.translation renamed as NORMALX-lib4.translation