如何在不递归的情况下 ls

如何在不递归的情况下 ls

我正在尝试 ls 目录中一些带有模式的文件。我只想扫描第一级而不是递归。

我的脚本:

for i in $(ls $INCOMINGDIR/*$BUSSINESSDATE*)
do
  echo $i;
done

上述命令递归扫描。怎么才能让它只扫描一级目录呢?

答案1

不解析ls。还不要使用 ALL_CAPS_VARS

for i in "$incoming_dir"/*"$business_date"*; do

交互式地,ls有一个-d选项可以防止下降到子目录:

ls -d $INCOMINGDIR/*$BUSSINESSDATE*

答案2

这个命令没有理由应该是递归的。但如果$INCOMINGDIR/*$BUSSINESSDATE*匹配一个目录,则显示该目录的内容而不是目录本身。但超出这个级别就不会再有递归了。

使用此命令可以避免这种影响:

ls -d "$INCOMINGDIR/"*"$BUSSINESSDATE"*

for ... in带输出的命令ls是有风险的。

总体而言find似乎更好的解决方案或

for i in "$INCOMINGDIR/"*"$BUSSINESSDATE"*

相关内容