1. ホーム
  2. スクリプト・コラム
  3. リナックスシェル

シェルスクリプトでバッチファイルを簡単に作成・変更する方法

2022-01-05 01:13:50

I. スクリプトの要件

1. python以下の全ての操作

2. 接尾辞がpyで終わるファイルを12個一括作成し、ファイル名に_hcipが含まれること、ファイル名に_hcipの固定文字列に加え、小文字のランダム文字8文字が含まれること。

3. 作成された12ファイルの接尾辞PYを大文字に変更し、固定文字列を_hcieに変更したもの

II. スクリプトの内容

#! /bin/bash
##########################################################
#File Name:create_file.sh
#Version:V1.0
#Aurhor:
#Emali:
#Created Time:2021-06-15 02:56:59
#Description: create files & modify files
##########################################################


if [ -d /python ];then
   cd /python
else
   mkdir /python
   cd /python
fi
for i in {1..12}
do
   file_name=$(echo $RANDOM |md5sum |cut -c 1-8)
   touch ${file_name}_hcip.py
done

for files in $(ls /python)
do
     file1=$(echo $files |cut -d '_' -f1)
     mv $files ${file1}_hcie.PY
done





三、スクリプトの実行結果

[root@control python]# /scripts/create_file.sh 
[root@control python]# ll
total 0
-rw-r--r-- 1 root root 0 Jun 15 04:26 4272db00_hcie.PY
-rw-r--r-- 1 root root 0 Jun 15 04:26 51989a58_hcie.PY
-rw-r--r-- 1 root root 0 Jun 15 04:26 75075364_hcie.PY
-rw-r--r-- 1 root root 0 Jun 15 04:26 7a272319_hcie.PY
-rw-r--r-- 1 root root 0 Jun 15 04:26 7d76af2f_hcie.PY
-rw-r--r-- 1 root root 0 Jun 15 04:26 977e73d6_hcie.PY
-rw-r--r-- 1 root root 0 Jun 15 04:26 9e4386a0_hcie.PY
-rw-r--r-- 1 root root 0 Jun 15 04:26 a35d5337_hcie.PY
-rw-r--r-- 1 root root 0 Jun 15 04:26 b9cb6458_hcie.PY
-rw-r--r-- 1 root root 0 Jun 15 04:26 b9d3349e_hcie.PY
-rw-r--r-- 1 root root 0 Jun 15 04:26 c3e589a2_hcie.PY
-rw-r--r-- 1 root root 0 Jun 15 04:26 e4f82be8_hcie.PY


追伸:JPEGファイルをJPGに変更する例

スクリプトで10個のファイルを作成し、サフィックスにjpegを使用します。

#! /bin/sh
for ((i=0;i<=10;i++))
do
    touch ${i}.jpeg
done


上記のスクリプトを実行すると、カレントディレクトリにname.suffixの構成で10個のファイルが生成されることが確認できます。

カレントディレクトリ内のファイルを一括して変更するには、カレントディレクトリを繰り返し表示して、変更が必要なファイル名を取得し、それを新しいファイル名のサフィックスにスプライスして新しいファイル名 name.newsuffix を形成する必要があります。

コードは次のようになります。

#! /bin/sh
oldsuffix="jpeg"
newsuffix="jpg"
dir=$(eval pwd)

for file in $(ls $dir | grep . ${oldsuffix})
    do
        name=$(ls ${file} | cut -d. -f1)
        mv $file ${name}. ${newsuffix}
    done
echo "change jpeg to jpg successd!"



  1. oldsuffix はファイルの古いサフィックス、newsuffix はファイルの新しいサフィックスです。
  2. $(cmd) はコマンド代行で、文の実行時に cmd コマンドを実行し、cmd コマンドの実行結果を返します。eval はコマンドライン処理を再度行う(コマンドに対して2回行わない)役割があり、eval に続く引数は正しいコマンドラインのコマンド実行に統合されることを意味します。eval pwdの結果は、スクリプトが置かれているディレクトリのパスです。
  3. ループ文の中で、cutコマンドを使って、一致するファイル名を切り出しています。cutは、ファイルの各行からバイト、文字、フィールドを切り出して、標準出力に送っています。dパラメータは区切り文字をカスタマイズするためのもので、デフォルトはタブで、プログラム中の-d.は.を意味します。f パラメーターは、どの領域をカットするかを指定します。-f1 は、最初の領域、ファイル名をカットすることを意味します。

概要

この記事は、シェルスクリプトファイルのバッチ作成と変更について紹介されています、より関連するシェルスクリプトファイルのバッチ作成と変更内容は、スクリプトハウスの過去の記事を検索してくださいまたは以下の関連記事を閲覧し続けることは、今後、スクリプトハウスをよりサポートすることを願って!.