Linux 编写bash脚本以查找目录中以开头的所有文件,如果存在,则不执行任何操作

Linux 编写bash脚本以查找目录中以开头的所有文件,如果存在,则不执行任何操作,linux,bash,file,Linux,Bash,File,因此,我必须找到目录中所有以字母a开头的文件,并列出它们。这很容易做到 cd some_directory for file in a*; do echo "$file" done 但是,我希望如果没有与a*匹配的文件,那么for循环将根本不会运行。目前,如果是这种情况,那么外壳将出现回声 a* 有办法做到这一点吗?谢谢您的文字与标题相反,在我下面的回答中,我假设文字是您的意图,您的标题不正确: 通过bash shell选项“nullglob”,可以使glob像这样工作: sho

因此,我必须找到目录中所有以字母a开头的文件,并列出它们。这很容易做到

cd some_directory

for file in a*; do 
    echo "$file"
done
但是,我希望如果没有与a*匹配的文件,那么for循环将根本不会运行。目前,如果是这种情况,那么外壳将出现回声

a*

有办法做到这一点吗?谢谢

您的文字与标题相反,在我下面的回答中,我假设文字是您的意图,您的标题不正确:

通过bash shell选项“nullglob”,可以使glob像这样工作:


shopt-s nullglob

另一种方法是使用
查找
并通过管道
stderr
忽略错误到
/dev/null

for file in $(find a* 2>/dev/null); do 
    echo "$file"
done

等待为什么
echo$a
?您在此处输入的代码中没有
$a
变量。你是说
$file
还是别的什么?是的,我是说
$file
我犯了一个打字错误,我跟不上你所做的所有编辑。编写代码,当你得到想要的结果/确定问题后,再发布。
ls a*
就是你想要的。不需要循环!我发布了我的代码,但这个@Rafael不断地将其更改为我不想要的方式。我唯一的原始错误是
$file
,但我的代码随后被更改为
$(ls./a*)
,这是我的选择。这就是它现在的样子,也是它的本意。请不要投反对票,我没有控制许多编辑