关于bash:需要检查目录中是否存在.gz文件

Need to check if .gz files exist in a directory

本问题已经有最佳答案,请猛点这里访问。

我的shell脚本中有一个提示,用户可以在其中选择一个目录。我正在尝试这样做:如果该目录中存在.gz文件,那么它们将退出循环;如果不存在,则会再次要求用户选择一个目录,但它不起作用。以下是我目前为止的情况:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
ls -d */
while :
do
echo"Which Directory do you want to access?"
read input_variable1
cd $input_variable1
if [ CHECK FOR .gz ]
then
break
else
ls -d */
echo"no .gz files to unzip. Try again."
fi
done


测试支持使用通配符,因此如果有一个文件与*.gz匹配,那么[ -f *.gz ]将为true(否则为false—正如@tripleee指出的那样,这将在多次匹配时失败;有关更好的变体,请参见下文)。

另一种可能是使用if ls *.gz &>/dev/null; then ...; else ...; fi(不会抛出任何错误)。