1

ファイル拡張子を持つファイル.iniが に存在するかどうかを (シェルで) チェックするにはどうすればよい/dirですか? 最速の方法は何ですか?ありがとう!

4

3 に答える 3

4

これは、既存の jpeg ファイルを検証するのに役立つことがわかりました。

if ls /path/*.jpg &> /dev/null; then
    #do something with existing files
else
    echo "files do not exist"
fi
于 2013-05-16T16:59:12.240 に答える
1
set -- /dir/*.ini
case $1 in
  ('/dir/*.ini') echo "No ini files here.";;
  (*)            echo "Found $# ini files: $@";;
esac

ほら見て!フォークはありません!lsこれは、 、findおよび友人へのフォークを備えたソリューションよりも数百万の CPU サイクルに勝るはずです。

ここで、ちょっとした落とし穴があります。あなたはそれを見つけることができますか?では、文字通り (star、dot、ini)/dirという名前のファイルが含まれている場合はどうなるでしょうか? *.ini上記は偽陰性を示します: ini ファイルはありますが報告されません。このケースに備えたい場合 (そして、あなたは慎重なプログラマーであり、細部に注意を払い、コードに落とし穴がないからですよね?)、最初のケースを少し変更して読みます。

('/dir/*.ini')
  if test -f '/dir/*.ini'; then
    echo "Wow, there's a plain file named '/dir/*.ini'!"
  else
    echo "No ini files here."
  fi;;
于 2012-09-12T13:43:31.823 に答える
0

find /dir/ -iname '*.ini'. サブディレクトリを検索したくない場合は、-maxdepth 1後に追加します/dir/

于 2012-09-12T13:34:04.527 に答える