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

编写Shell脚本遍历目录并验证Demo子目录状态与子目录大小

没问题,我来帮你搞定这两个任务,分步骤给你说明:

1. 验证子目录大小

根据你使用的环境不同,有两种常用方法:

如果你用Git Bash/WSL这类类Unix Shell

可以用du命令快速查看目录大小:

  • 查看单个子目录的总大小(人类可读格式):
    du -sh /mnt/c/xyz/你的子目录名
    
    参数解释:-s汇总总大小,-h用KB/MB/GB等易读单位显示
  • 列出C:\xyz下所有一级子目录的大小:
    du -sh /mnt/c/xyz/*/
    

如果你用Windows原生PowerShell

用PowerShell的内置命令更贴合Windows环境:

  • 查看单个子目录的总大小:
    Get-ChildItem -Path C:\xyz\你的子目录名 -Recurse | Measure-Object -Property Length -Sum | Select-Object -ExpandProperty Sum
    
    要是想转成易读的MB/GB格式,可以这样:
    $size = (Get-ChildItem -Path C:\xyz\你的子目录名 -Recurse | Measure-Object Length -Sum).Sum / 1GB
    Write-Host "总大小:$($size.ToString('0.00')) GB"
    
  • 列出C:\xyz下所有一级子目录的大小:
    Get-ChildItem -Path C:\xyz -Directory | ForEach-Object {
        $dirSize = (Get-ChildItem $_.FullName -Recurse | Measure-Object Length -Sum).Sum / 1MB
        Write-Host "$($_.Name): $($dirSize.ToString('0.00')) MB"
    }
    
2. 编写Shell脚本查找并判断Demo目录

这里分两种场景给你写脚本,适配不同的Windows Shell环境:

场景1:Git Bash/WSL类Unix Shell脚本

这个脚本会递归遍历C:\xyz(转成Shell识别的/mnt/c/xyz),找到所有名为Demo的子目录,再判断是否为空:

#!/bin/bash

# 定义目标根目录,注意Windows路径在Shell中要转换为/mnt/c/格式
TARGET_ROOT="/mnt/c/xyz"

# 递归查找所有名为Demo的目录,逐个处理
find "$TARGET_ROOT" -type d -name "Demo" | while read -r demo_path; do
    # 判断目录是否非空(-A参数会包含隐藏文件)
    if [ -n "$(ls -A "$demo_path")" ]; then
        echo "OK: $demo_path"
    else
        echo "NOT_OK: $demo_path"
    fi
done

脚本说明:

  • find "$TARGET_ROOT" -type d -name "Demo":递归搜索所有类型为目录、名称严格匹配Demo的路径
  • while read -r demo_path:遍历每一个找到的Demo目录
  • ls -A "$demo_path":列出目录内所有内容(包括隐藏文件),如果目录为空则输出为空字符串
  • [ -n "$(...)" ]:判断输出是否非空,非空则输出OK,否则输出NOT_OK

场景2:Windows原生批处理脚本(.bat/.cmd)

如果你习惯用Windows自带的命令行,这个批处理脚本更合适:

@echo off
set "TARGET_ROOT=C:\xyz"

:: 递归遍历TARGET_ROOT下所有名为Demo的目录
for /r "%TARGET_ROOT%" /d %%d in (Demo) do (
    :: 判断目录是否为空:列出目录内容,若没有任何输出则为空
    dir /b "%%d" | findstr . >nul
    if errorlevel 1 (
        echo NOT_OK: %%d
    ) else (
        echo OK: %%d
    )
)

脚本说明:

  • for /r "%TARGET_ROOT%" /d %%d in (Demo):递归搜索TARGET_ROOT下所有名为Demo的目录
  • dir /b "%%d" | findstr . >nul:用dir /b列出目录内容,findstr .检查是否有内容,没有则errorlevel为1
  • 根据errorlevel的值输出NOT_OK或OK,同时带上目录路径方便定位

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.05.08 07:12:34