私のファイルが以下のいずれかのサブディレクトリに存在するかどうかを知りたい。サブディレクトリは上記のシェルスクリプトのステップで作成されていますが、以下のコードはファイルが存在しない場合でも常にそのファイルが存在しないことを示しています。Bash:指定されたファイルのないサブディレクトリを見つけよう
#!/bin/bash
....
if ! [[ -e [ **/**/somefile.txt && -s **/**/somefile.txt ]]; then
echo "===> Warn: somefile.txt was not created in the following path: "
# I want to be able to print the path in which file is not generated
exit 1
fi
は、私は、ファイル名は、すべてのサブディレクトリに作成されるsomefile.txtですけど、サブディレクトリ名は、そのためグロブ...多くのことを変更します。
最初の '**/somefile.txt'は、実際に存在する' somefile.txt'のコピーにのみ展開されます。 *存在しないものを見つけたい場合は、ディレクトリを繰り返し処理する必要があり、 'somefile.txt'をglob式に含めることはできません。 –
第2に、glob式を '-e'や' -s'の引数として渡せません。これらのテスト式は、引数としての正確なパス名、または* single * filenameをとります。彼らは、グロブ、または複数のファイルのリスト(グロブは、いくつかのコンテキストでは、展開することができます)を取ることはありません。 –
第3に、 'shopt -s extglob'を実行して' ** 'に特別な意味を持たせる必要があります。 (インタラクティブなシェルですぐに使えるのであれば、あなたのドットファイルの1つがおそらくあなたのために実行しているでしょう)。 –