You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何检查指定路径是否仅存在特定文件夹或同时存在其他文件/文件夹

实现指定路径下的条件执行脚本逻辑

需求场景

指定路径中仅存在目标文件夹时运行scriptA.sh;若目标文件夹与其他文件/文件夹共存时运行scriptB.sh。

解决方案(Bash脚本实现)

以下提供两种可靠的实现方式,优先推荐第二种(避免文件名特殊字符导致的统计错误):

方式一:基于ls统计条目数

#!/bin/bash

# 替换为你的目标文件夹路径
TARGET_DIR="/path/to/your/target_folder"
BASE_DIR=$(dirname "$TARGET_DIR")

# 先验证目标文件夹是否存在
if [ ! -d "$TARGET_DIR" ]; then
    echo "目标文件夹不存在,终止执行"
    exit 1
fi

# 启用dotglob,让通配符匹配隐藏文件/文件夹(避免漏算)
shopt -s dotglob

# 统计父目录下的所有条目数量(排除.和..)
ITEM_COUNT=$(ls -1A "$BASE_DIR" | wc -l)

# 关闭dotglob
shopt -u dotglob

# 执行对应逻辑
if [ "$ITEM_COUNT" -eq 1 ]; then
    # 仅存在目标文件夹
    ./scriptA.sh
elif [ "$ITEM_COUNT" -gt 1 ]; then
    # 目标文件夹与其他条目共存
    ./scriptB.sh
fi

方式二:基于数组统计(更可靠)

当文件名包含换行、空格等特殊字符时,ls统计可能出错,这种方式能完美兼容:

#!/bin/bash

# 替换为你的目标文件夹路径
TARGET_DIR="/path/to/your/target_folder"
BASE_DIR=$(dirname "$TARGET_DIR")

# 先验证目标文件夹是否存在
if [ ! -d "$TARGET_DIR" ]; then
    echo "目标文件夹不存在,终止执行"
    exit 1
fi

# 启用dotglob,包含隐藏文件/文件夹
shopt -s dotglob
# 将父目录下的所有条目存入数组
ITEMS=("$BASE_DIR"/*)
# 关闭dotglob
shopt -u dotglob

# 获取数组长度(即条目数量)
ITEM_COUNT=${#ITEMS[@]}

# 执行对应逻辑
if [ "$ITEM_COUNT" -eq 1 ]; then
    ./scriptA.sh
elif [ "$ITEM_COUNT" -gt 1 ]; then
    ./scriptB.sh
fi

关键说明

  • BASE_DIR:通过dirname获取目标文件夹所在的父目录,确保统计范围正确
  • dotglob:启用后让通配符匹配隐藏文件/文件夹,避免漏算.开头的条目
  • 数组统计方式:能正确处理含特殊字符的文件名,是生产环境更推荐的实现方式

内容的提问来源于stack exchange,提问作者Oxycash

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.18 06:50:30