file_022.bmp、file_023.bmp...file_0680.bmp など、多数のファイルがあります。これらの名前を、file_1.bmp、file_2.bmp...file_658.bmp など、もう少し便利なものに変更する必要があります。
これを行うために作成できる bash スクリプトはありますか? 助けとアドバイスをありがとう。
ルーク・H
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
追加および追加します.perl
file_
-n オプションを使用すると、何も変更せずにテストを実行できます
この例からわかるように、正規表現の選択を正しく考える必要があります。そうしないと、上記の preg_based.php のように、file_preg_based.perl :) を補うために([a-z_]*)
ここで使用する必要があった場合が発生します。
これは、私が debian に固執し続ける多くの理由の 1 つです。ただし、debian 以外の他のシステムに相当するものを見つけたいと思っています :-/
ファイル 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
出力を調べた後、「エコー」を削除します