動的名前のファイルがあることを確認してください。

動的名前のファイルがあることを確認してください。

、などの動的名前とバージョンを持つファイルがありますAbc.1.0.zipAbc.2.0.zipバージョンに関係なくファイルが存在することを確認したいと思います。頑張った

find -name "Abc(.*).zip"

しかし、これは正規表現を考慮しません。また、find結果を取得し、数が1より大きいことを確認し、その変数を条件に使用できます。

シェルスクリプトでこのように1行にブール値を返す簡単な方法はありますかfileExists Abc.1.0.zip

答え1

find(GNU) に正規表現を使用させるには、次の-regexオプションを使用する必要があります。

find . -regex ".*Abc.[0-9]+.[0-9]+.zip"

また、-regextypeオプションを使用して、さまざまな正規表現タイプを参照できます。-regex

有効なタイプは次のとおりです。'findutils-default', 'awk', 'egrep', 'ed', 'emacs', 'gnu-awk', 'grep', 'posix-awk', 'posix-basic', 'posix-egrep', 'posix-extend', 'posix-minimal-basic', 'sed'.

を使用すると、findオプションを使用して見つかった各ファイルに対してコマンドを実行できます-exec。したがって、ファイルが見つかると、指定したコマンドが実行されます。

前任者:

$ find . -regex ".*Abc.[0-9]+.[0-9]+.zip" -exec file {} \;
./Abc.1.0.zip: Zip archive data, at least v2.0 to extract
./Abc.2.0.zip: Zip archive data, at least v2.0 to extract

ファイルがシェルにあるかどうかをテストするには、次のコマンドを使用します。

[[ -f "Abc.1.0.zip" ]] && echo "File exists" || echo "File Not Exists"

関連情報