ファイル拡張子が.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
するものが見つからない場合はそれ自体が拡張されます(アスタリスクは保持されます)。