フォルダに特定の種類のファイルがあることを確認する

フォルダに特定の種類のファイルがあることを確認する

ファイル拡張子が.javaであることを確認する方法は?

これまで私は以下を持っています:

  for javaFile in *.java ; do
    {
        echo "The file $javaFile has : " >> ~/Desktop/externalServers.txt
        grep -E '^[^/]{2}.*http' $javaFile >> ~/Desktop/externalServers.txt     

        grep -E '^[^/]{2}.*ftp' $javaFile  >> ~/Desktop/externalServers.txt

        echo "----------------------------------------" >> ~/Desktop/externalServers.txt
        sed -e "s/[[:space:]]\+/ /g" ~/Desktop/externalServers.txt >> ~/Desktop/externalServersTemp.txt
        rm ~/Desktop/externalServers.txt
        mv ~/Desktop/externalServersTemp.txt ~/Desktop/externalServers.txt
        sed 's/^\n//' ~/Desktop/externalServers.txt >> ~/Desktop/externalServersTemp.txt
        rm ~/Desktop/externalServers.txt
        mv ~/Desktop/externalServersTemp.txt ~/Desktop/externalServers.txt

    } done

ただし、これを行うたびに、次のエラーが発生します。

grep: *.java: そのファイルやディレクトリはありません。

デフォルトでは、まずフォルダに.java型ファイルがあることを確認してから、スクリプトの実行を続行したいと思います。

ベストアンサー1

Bashでは、次を使用します。

shopt -s nullglob
for pdfFile in *.java;do
    # your code goes here
done

この構文は Bourne のようなシェルで動作します。このnullglobオプションは bash にのみ適用されます。使用した中括弧()は{}Cスタイルシェル用です。

shopt -s nullglobこのnullglobオプションが設定されている場合、デフォルトでは一致しないglobを空の文字列に拡張する必要があることをBashに通知します。デフォルトでは、一致*.javaするものが見つからない場合はそれ自体が拡張されます(アスタリスクは保持されます)。

おすすめ記事