我正在尝试 ls 目录中一些带有模式的文件。我只想扫描第一级而不是递归。
我的脚本:
for i in $(ls $INCOMINGDIR/*$BUSSINESSDATE*)
do
echo $i;
done
上述命令递归扫描。怎么才能让它只扫描一级目录呢?
答案1
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"*