首页 > 解决方案 > 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

如果不清楚,我有一个目录,其中包含一堆带有数字名称的目录。该目录还包含一些我不想计算磁盘空间的其他文件/目录。所以我只想遍历目录并获取每个数字子目录使用的磁盘空间。我确信这不是最佳代码,但它是在安全的文件系统上私下运行的,所以出现问题的风险非常低,但如果有办法改进它,请告诉我。

标签: linuxbash

解决方案


使用 bash 的扩展模式

shopt -s extglob
for subdir in "$DIR_PATH"/secure/+([[:digit:]])/
# ...............................^^-----------^
...

请注意尾部的斜杠:它将结果限制为仅目录,忽略以所有数字命名的文件。


推荐阅读