shell脚本判断文件夹下是否有文件

2025-04-09 15:20:45
推荐回答(1个)
回答1:

search_dir=/tmp/test
include_subdir=1

if [ $include_subdir -eq 1 ]; then
    n=$(find $search_dir -type f -exec sh -c 'printf "%s\n" "$1"; kill "$PPID"' sh {} \; | grep -v "Terminated" | wc -l)
else
    n=$(find $search_dir -maxdepth 1 -type f -exec sh -c 'printf "%s\n" "$1"; kill "$PPID"' sh {} \; | grep -v "Terminated" | wc -l)
fi

结果 n 为 0 表示指定目录下面没有文件,否则有文件。如果不需要检查指定目录下的子目录,把 include_subdir 置为 0 即可。find 命令中较复杂的那部分是为了实现找到第一个文件时就停止查找,避免检查有大量文件的目录时影响性能。