如何不使用递归

Sas*_*Sas 25 ls bash shell-script

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

我的脚本:

for i in $(ls $INCOMINGDIR/*$BUSSINESSDATE*)
do
  echo $i;
done
Run Code Online (Sandbox Code Playgroud)

以上命令递归扫描。如何让它只扫描一级目录?

gle*_*man 50

不要解析ls。也不要使用 ALL_CAPS_VARS

for i in "$incoming_dir"/*"$business_date"*; do
Run Code Online (Sandbox Code Playgroud)

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

ls -d $INCOMINGDIR/*$BUSSINESSDATE*
Run Code Online (Sandbox Code Playgroud)

  • 凉爽的。我不知道 -d 选项! (2认同)

Hau*_*ing 8

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

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

ls -d "$INCOMINGDIR/"*"$BUSSINESSDATE"*
Run Code Online (Sandbox Code Playgroud)

for ... inls输出的命令是有风险的。

一般来说find似乎是更好的解决方案或

for i in "$INCOMINGDIR/"*"$BUSSINESSDATE"*
Run Code Online (Sandbox Code Playgroud)