.RAW ファイル拡張子をテストするには?

.RAW ファイル拡張子をテストするには?

sh30分ごとに実行されるスクリプトを設定しようとしています。実行するたびに、ディレクトリに.RAWファイルが1つ以上あることを確認したいと思います。ファイル拡張子が見つかると別のコードが実行されますが、現在使用する正しいifステートメントが見つかりません。

このコード例は最も理想的なアプローチではないことを知っていますが、私が試したコードは次のとおりです。これは明らかに間違っています。

cd ./dir/
if [ ! -f "*.RAW"]; then
  echo "No files!"
else
  echo "Yes files!"
fi

.RAW 拡張子があるかどうかを正しくテストするには?

ベストアンサー1

そしてzsh

files=(*.RAW(DN))
if (($#files)); then
  echo Yes
else
  echo No
fi

正しければ定期的な示唆したように、ファイル(または一般ファイルへのシンボリックリンク)-fは次のとおりです。

file=(*.RAW(ND-.))

代わりに。

POSIX的に:

has_regfiles_by_extension() {
  for ext do
    for file in .*."$ext" ."$ext" *."$ext"; do
      [ -f "$file" ] && return
    done
    return 1
  done
}

if has_regfiles_by_extension RAW raw; then
  echo YES
else
  echo NO
fi

を使用するには、ls次の手順を実行します。

if ls -Aq | grep -q '\.RAW$'; then
  echo yes
else
  echo no
fi

1つの利点は、ディレクトリを読み取れない場合(シェルglobの場合と同じように自動的に無視されるのではなく)、エラーメッセージが表示されることです。

おすすめ記事