linux - Bash 脚本 - 使用正则表达式遍历目录
问题描述
我确信这一定是可能的,但我不确定如何。我要做的是遍历一个目录,在其中寻找数字目录,并获取它们的磁盘空间。这是我想出的,但它不处理正则表达式。
FILES="$DIR_PATH/secure/{[0-9]+}"
for f in $FILES
do
used=`du -s $f`
base=`basename $f`
mysql --user=$DB_USER --password=$DB_PASS --host=$DB_HOST $DB_NAME << EOF
INSERT INTO disk_usage(site_id, filesystem, used, size) VALUES("$base", "Private Files", "$used", "$size")
EOF
done
如果不清楚,我有一个目录,其中包含一堆带有数字名称的目录。该目录还包含一些我不想计算磁盘空间的其他文件/目录。所以我只想遍历目录并获取每个数字子目录使用的磁盘空间。我确信这不是最佳代码,但它是在安全的文件系统上私下运行的,所以出现问题的风险非常低,但如果有办法改进它,请告诉我。
解决方案
使用 bash 的扩展模式
shopt -s extglob
for subdir in "$DIR_PATH"/secure/+([[:digit:]])/
# ...............................^^-----------^
...
请注意尾部的斜杠:它将结果限制为仅目录,忽略以所有数字命名的文件。
推荐阅读
- sockets - 运行 MPI 时,有没有办法先执行顺序代码,然后运行并行代码
- r - 针对 NULL 和其他东西测试变量
- javascript - javascript 如何从 Promise 中保留变量?
- r - 带有 dplyr 的 for 循环汇总返回与 group_by 不同的结果
- authentication - 具有端点身份验证的 Prometheus blackbox-exporter?
- python - NaN 导致 sklearn 模型无法运行
- node.js - 客户端未收到多播消息
- r - 如何从 MODISTools 中的超时错误中恢复
- wso2 - WS02 EI定时任务——如何加密参数
- kotlin - 没有在资源/可绘制对象中获取图像 ID