[A-00061]Shellでファイルリストから指定されたファイルに対してコマンド実行する
シェルで外部のファイルリストから指定されたファイルを読み込み、そのファイルに対してコマンドを実行する場合の方法を記載しておく。
・ファイルリストから読み込んだファイルを作成する
対象ファイルを作成します。
ディレクトリ構成は下記のとおり.list.txtにファイル名が記載されています。
MacBook-Pro:test$ tree filetest
filetest
├── params
│ └── list.txt
└── tocopy
MacBook-Pro:test$ cat filetest/params/list.txt
abcd0001.sql
abcd0002.sql
abcd0004.sql
cbcd0012.sql
hjkd0024.sql
hhhh0023.sql
uudd0015.sql
ymca1022.sql
下記のスクリプトで一括でファイルを作成します。テキストファイルから読み込む下記のように記載します。
#!/bin/bash
while read file
do
touch $file && chmod 777 $file
echo $file" is created."
done < ./params/list.txt
exit 0
MacBook-Pro:filetest$ ./create_files.sh
abcd0001.sql is created.
abcd0002.sql is created.
abcd0004.sql is created.
cbcd0012.sql is created.
hjkd0024.sql is created.
hhhh0023.sql is created.
uudd0015.sql is created.
ymca1022.sql is created.
下記のとおり、ファイルが作成されました。
MacBook-Pro:filetest$ tree --dirsfirst
.
├── params
│ └── list.txt
├── tocopy
├── abcd0001.sql
├── abcd0002.sql
├── abcd0004.sql
├── cbcd0012.sql
├── create_files.sh
├── hhhh0023.sql
├── hjkd0024.sql
├── uudd0015.sql
└── ymca1022.sql
・ファイルリストから読み込んだファイルをコピーする
次のユースケースはファイルリストから読み込んだファイルを検索して存在したら[tocopy]ディレクトリにコピーするという処理です。
新しいパラメータファイルを作成します。末尾9で記載されるファイルは存在しないファイルです。
MacBook-Pro:params$ cat copy_list.txt
abcd0001.sql
abcd0002.sql
abcd9999.sql
cbcd0012.sql
hjkd0024.sql
hhhh9999.sql
uudd0015.sql
ymca1999.sql
#!/bin/bash
while read file
do
if [ -e ./$file ];
then
cp ./$file ./tocopy/$file
echo $file" is copied."
else
echo $file" is not exist."
fi
done < ./params/copy_list.txt
下記が実行結果になります。
MacBook-Pro:filetest$ ./copy_files.sh
abcd0001.sql is copied.
abcd0002.sql is copied.
abcd9999.sql is not exist.
cbcd0012.sql is copied.
hjkd0024.sql is copied.
hhhh9999.sql is not exist.
uudd0015.sql is copied.
ymca1999.sql is not exist.
MacBook-Pro:filetest$ tree --dirsfirst
.
├── params
│ ├── copy_list.txt
│ └── list.txt
├── tocopy
│ ├── abcd0001.sql
│ ├── abcd0002.sql
│ ├── cbcd0012.sql
│ ├── hjkd0024.sql
│ └── uudd0015.sql
├── abcd0001.sql
├── abcd0002.sql
├── abcd0004.sql
├── cbcd0012.sql
├── copy_files.sh
├── create_files.sh
├── hhhh0023.sql
├── hjkd0024.sql
├── uudd0015.sql
└── ymca1022.sql
コメントを残す