ファイルを正規表現で検索し、圧縮する

このスクリプトは、特定のディレクトリ内でファイル名が指定した正規表現に一致するファイルを検索し、それらのファイルを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'

ここでは、変数pathregexを設定しています。

  • 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

ここでは、以下の手順を実行しています。

  1. ファイルの検索:files=$(ls | grep -E "${regex}") lsコマンドでディレクトリ内のファイルをリストし、grep -Eで正規表現に一致するファイルを検索しています。-Eオプションは拡張正規表現を使用するためのものです。この結果はfiles変数に格納されます。
  2. 条件分岐:if files=$(ls | grep -E "${regex}"); then 正規表現に一致するファイルが見つかった場合、files変数にはそのファイル名が格納されます。if文の条件が真になるため、以下の処理が実行されます。
  3. ファイルの圧縮:zip -rm "${path}/jdk_files.zip" ${files} zipコマンドで、一致するファイルをjdk_files.zipという名前のZIPファイルに圧縮します。-rオプションはディレクトリを再帰的に圧縮するためのもので、-mオプションは圧縮後に元のファイルを削除します。
  4. 成功メッセージ:echo "Files zipped successfully." 圧縮が成功した場合、このメッセージが表示されます。
  5. エラーメッセージ:echo "No matching files found." 一致するファイルが見つからなかった場合、このメッセージが表示されます。

結論

このスクリプトは、特定のディレクトリ内で正規表現に一致するファイルを検索し、それらをZIPファイルに圧縮するための簡単かつ効率的な方法を提供します。ファイルが見つからない場合には適切なメッセージを表示するため、ユーザーはスクリプトの結果を簡単に確認することができます。

スポンサーリンク

-IT関連
-