-3

file_022.bmp、file_023.bmp...file_0680.bmp など、多数のファイルがあります。これらの名前を、file_1.bmp、file_2.bmp...file_658.bmp など、もう少し便利なものに変更する必要があります。

これを行うために作成できる bash スクリプトはありますか? 助けとアドバイスをありがとう。

ルーク・H

4

2 に答える 2

5

Debian ベースの Linux システムを使用している場合は、正規表現を受け入れる名前変更スクリプトを使用してファイルの名前を変更できます。マニュアルページを見つけるのが難しいので、もう少し情報を。

例えば

harald@Midians_Gate:~$ ls p*.php

parse.php  pd.php  pgrep.php  preg_based.php  proc.php

拡張子を .perl に変更し、名前の先頭に file_ を追加したい場合は、次のコマンドを使用します。

rename -n 's/([a-z]*)\.php/file_$1.perl/' p*.php

与えるだろう

parse.php renamed as file_parse.perl
pd.php renamed as file_pd.perl
pgrep.php renamed as file_pgrep.perl
preg_based.php renamed as preg_file_based.perl
proc.php renamed as file_proc.perl

ベースファイル名を選択してキャプチャし、([a-z]*)それを置換で使用して、通常の文字列で $1 を$1追加および追加します.perlfile_

-n オプションを使用すると、何も変更せずにテストを実行できます

この例からわかるように、正規表現の選択を正しく考える必要があります。そうしないと、上記の preg_based.php のように、file_preg_based.perl :) を補うために([a-z_]*)ここで使用する必要があった場合が発生します。

これは、私が debian に固執し続ける多くの理由の 1 つです。ただし、debian 以外の他のシステムに相当するものを見つけたいと思っています :-/

于 2012-06-19T20:20:19.297 に答える
4

ファイル a.bmp、b.bmp、c.bmp があり、最終的に file_1.bmp、file_2.bmp、file_3.bmp にしたい場合

バッシュを使用:

mkdir result
index=1
for i in *.bmp
do
  mv "$i" "result/file_"$((index++)).bmp
done

注: file_xx.bmp のようなファイルを誤って上書きしないように、サブディレクトリを使用することをお勧めします。

展開後にコマンドラインに収まらないファイルが多すぎる場合は、次のようなものを使用できます。

mkdir result
index=1
find . -name "*.bmp" | while read i
do
  echo mv "$i" "result/file_"$((index++)).bmp
done

出力を調べた後、「エコー」を削除します

于 2012-06-19T21:35:16.287 に答える