シェルスクリプト:バッチ編集ファイル名(ファイル名の文字を追加/削除)

文字を追加

たとえば、次のように:バルクはランダムな文字列ファイル10、追加_aaaの背後にあるすべてのファイル名、同じサフィックスを作成します。

[ルート@ localhostのgoodboy]#LSは

adddbbdedf.html baacjaiija.html bhcfaabcfh.html dgjdcdfbca.html efejadfdji.html

agdhcdeaje.html bgffbffjcg.html cbbiebdafh.html diadebbhag.html jcajafgejf.html

スクリプト1:

[ルート@ localhostの〜]#猫02.sh 
#!/ binに/ bashのの
パス= / goodboy 
[-d $パス] && CDの$パス
`ls`内のファイルのための
DO 
 MV $ファイル`エコー$ファイル|さんのsed / \(。* \)\。\(。* \)/ \ 1_aaa。\ 2 / g'` 
行わ

説明:

中間セパレータの代わりに意図\脱保護を使用して、正規表現の代替的sedの使用は、()ファイル名はブラケット\ 1で表します。

最初の2つのブラケット\ 2であるサフィックスHTMLコンテンツを表します。

この方法を使用すると、代わりのシンボルに追加する必要があります;

 

次のように変化の影響後、次のとおりです。

[ルート@ localhostのgoodboy]#LL 
-rw-R - r--の1つのルートルート0 2月17 17時40分adddbbdedf_aaa.html 
-rw-R - r--の1つのルートルート0 2月17 17時40分agdhcdeaje_aaa .htmlの
-rw-R - r--の1つのルートルート0 2月17午後5時40分baacjaiija_aaa.html 
-rw-R - r--の1つのルートルート0 2月17午後5時40 bgffbffjcg_aaa.html 
-rw-rを--r-- 1ルートルート0 2月17午前17時40 bhcfaabcfh_aaa.html 
-rw-R - r--の1つのルートルート0 2月17午前17時40 cbbiebdafh_aaa.html 
-rw-R - r--の1ルートルート0 2月17 17:40 dgjdcdfbca_aaa.html 
-rw-R - r--の1ルートルート0 2月17 17:40 diadebbhag_aaa.html 
-rw-R - r--の1ルートルート0 2月17午後05時40 efejadfdji_aaa.html 
-rw-R - r--の1つのルートルート0 2月17午前17時40 jcajafgejf_aaa.html

  

スクリプト2:

#!/ binに/ bashのの
パス= / goodboy 
[-d $パス] && CDの$パス
ls`は`内のファイルのために
行う
 ` mvは$ファイルは、$ファイルをエコー| SEDの/ \(。* \)\(\ .. * \)/ \ 1_aaa \ 2 / g'` 
行わ
 

 

説明:

同様の.html積分セパレータとサフィックスを表す2つのブラケット、上記の内容は、その後、内容が別のポイントを追加する必要はありません置き換えることが相違して、あるいは、正規表現のsedと;.セパレータもの使用を必要とします\イタリア持ち去ら。

 

あなたはそれがイタリアオフ\する必要はありません、ルックスの多くを冷却、sedは-rパラメータを使用することができます。

MV $ファイル `エコー$ファイル|(。*)SED -rさん/(\ .. *)/ \ 1_aaa \ 2 / g'`

 

文字を削除するには

たとえば:バッチ名の変更、ファイル名に余分な文字を削除

ディレクトリのファイル名_finishedを除去するのに必要とされます。

stu_102999_1_finished.jpg

stu_102999_2_finished.jpg

stu_102999_3_finished.jpg

stu_102999_4_finished.jpg

stu_102999_5_finished.jpg

 

この方法は多くあります達成することができます。

方法:ループの交換を結合するためのsed

[赤ちゃん@ localhostの〜] `内のファイルのための$のls * .jpg`; mvは$ファイル` $ファイルをエコーを行う| SEDさん/ _finished // g'`;行わ;

  

方法2:AWKを結合LSは、bashの出力を実行します

[赤ちゃん@ localhostの〜] $ lsの* .jpgの|のawk -F '{ "$ 1 $ 2" "印刷" MV "$ 0"}' "_finished" | bashの

   

実際_finished、MVおよび変数に区切り文字として、次のように実行されるコマンドは、二重引用符を必要とします

[赤ちゃん@ localhostの〜] $ lsの* .jpgの|のawk -F "_finished" '{印刷"MV "$ 0" "$ 1 $ 2""}' 
MV stu_102999_1_finished.jpg stu_102999_1.jpg 
MV stu_102999_2_finished.jpg stu_102999_2.jpg 
MV stu_102999_3_finished。 JPG stu_102999_3.jpg 
MV stu_102999_4_finished.jpg stu_102999_4.jpg 
MV stu_102999_5_finished.jpg stu_102999_5.jpg

  

方法3:名前を変更(名前の変更をインストールする必要)の名前を変更

[赤ちゃん@ localhostの〜] $名前の変更" _finished "  "" * .JPG

 

方法4:繰り返し荷重と可変部分のために採取

[赤ちゃん@ localhostの〜] $ lsの `内のファイルを* .jpg`; mvは$ファイルを行う`エコー$ {ファイル%_finished *} jpg`;行わ;

  

エコーを使用することなく達成することができます

[赤ちゃん@ localhostの〜] lsの `内のファイルのための$ * .jpg`;やるMV $ファイル$ {ファイル%_finished *}のjpg;行わ;

  

次のような結果を変更した後、次のとおりです。

stu_102999_1.jpg
stu_102999_2.jpg
stu_102999_3.jpg
stu_102999_4.jpg
stu_102999_5.jpg

おすすめ

転載: www.cnblogs.com/xuange306/p/12030129.html