このスクリプトは、特定のディレクトリ内でファイル名が指定した正規表現に一致するファイルを検索し、それらのファイルをZIP形式で圧縮するためのものです。以下にスクリプトの各部分について詳細に説明します。
スクリプトの内容
コードをコピーする
# パスとファイル名の正規表現を設定
path='taregetpath'
regex='jdk-.*\.deb'
cd "${path}"
# パス内のファイルを検索してファイル名が正規表現に一致するか確認
if files=$(ls | grep -E "${regex}"); then
zip -rm "${path}/jdk_files.zip" ${files}
echo "Files zipped successfully."
else
echo "No matching files found."
fi
詳細な解説
1. パスと正規表現の設定
path='taregetpath' regex='jdk-.*\.deb'
ここでは、変数path
とregex
を設定しています。
path
: ファイルを検索するディレクトリのパスです。この例では'taregetpath'
となっていますが、実際のディレクトリに置き換えてください。regex
: 検索するファイル名の正規表現です。この正規表現では、jdk-
で始まり、任意の文字列が続き、.deb
で終わるファイルを検索します。
2. ディレクトリの変更
cd "${path}"
cd
コマンドを使って、検索対象のディレクトリに移動します。
3. ファイルの検索と圧縮
if files=$(ls | grep -E "${regex}"); then
zip -rm "${path}/jdk_files.zip" ${files}
echo "Files zipped successfully."
else
echo "No matching files found."
fi
ここでは、以下の手順を実行しています。
- ファイルの検索:
files=$(ls | grep -E "${regex}")
ls
コマンドでディレクトリ内のファイルをリストし、grep -E
で正規表現に一致するファイルを検索しています。-E
オプションは拡張正規表現を使用するためのものです。この結果はfiles
変数に格納されます。 - 条件分岐:
if files=$(ls | grep -E "${regex}"); then
正規表現に一致するファイルが見つかった場合、files
変数にはそのファイル名が格納されます。if
文の条件が真になるため、以下の処理が実行されます。 - ファイルの圧縮:
zip -rm "${path}/jdk_files.zip" ${files}
zip
コマンドで、一致するファイルをjdk_files.zip
という名前のZIPファイルに圧縮します。-r
オプションはディレクトリを再帰的に圧縮するためのもので、-m
オプションは圧縮後に元のファイルを削除します。 - 成功メッセージ:
echo "Files zipped successfully."
圧縮が成功した場合、このメッセージが表示されます。 - エラーメッセージ:
echo "No matching files found."
一致するファイルが見つからなかった場合、このメッセージが表示されます。
結論
このスクリプトは、特定のディレクトリ内で正規表現に一致するファイルを検索し、それらをZIPファイルに圧縮するための簡単かつ効率的な方法を提供します。ファイルが見つからない場合には適切なメッセージを表示するため、ユーザーはスクリプトの結果を簡単に確認することができます。