记录几个文件夹统计bash命令

Page content

1、 统计文件夹下文件的个数

find . -maxdepth 1 -type d | wc -l # 统计当前文件夹下文件夹的个数

find /path -maxdepth 1 -type d | wc -l # 统计指定文件夹下文件夹的个数

2、 删除指定文件夹下小于指定大小文件夹

bash脚本:

#!/bin/bash

# cleanup_small_folders.sh

# 指定文件夹路径
target_dir="/vol1/1000/download/complete"

# 统计当前文件夹下文件夹的个数
folder_count_before=$(find "$target_dir"  -maxdepth 1 -type d | wc -l)
echo "文件夹数量(删除前): $folder_count_before"

# 指定文件夹大小的阈值(以KB为单位)
size_threshold=$((1024 * 500))  # 例如,1MB = 1024KB

# 使用find命令查找小于指定大小的文件夹,并删除它们
find "$target_dir" -type d -exec du -sk {} + | awk -v threshold="$size_threshold" '$1 < threshold {print $2}' | while IFS= read -r dir; do
    echo "Deleting directory: $dir"
    rm -rf "$dir"
done


# 统计当前文件夹下文件夹的个数
folder_count_after=$(find "$target_dir"  -maxdepth 1 -type d | wc -l)
echo "文件夹数量(删除后): $folder_count_after"

3、删除大于 3GB 的文件夹

bash脚本:

#!/bin/bash

# cleanup_small_folders.sh

# 指定文件夹路径
target_dir="/vol1/1000/download/complete"

# 统计当前文件夹下文件夹的个数
folder_count_before=$(find "$target_dir"  -maxdepth 1 -type d | wc -l)
echo "文件夹数量(删除前): $folder_count_before"

# 指定文件夹大小的阈值(以KB为单位)
size_threshold=$((1024 * 5000))  # 例如,1MB = 1024KB

# 输出提示信息,显示要删除大于多少MB的文件夹
echo "删除大于: $((size_threshold / 1024))M的文件夹。"

# 使用find命令查找小于指定大小的文件夹,并删除它们
find "$target_dir" -type d -exec du -sk {} + | awk -v threshold="$size_threshold" '$1 > threshold {print $2}' | while IFS= read -r dir; do
    echo "Deleting directory: $dir"
    rm -rf "$dir"
done


# 统计当前文件夹下文件夹的个数
folder_count_after=$(find "$target_dir"  -maxdepth 1 -type d | wc -l)
echo "文件夹数量(删除后): $folder_count_after"

4、当前文件夹下文件夹名模糊查找匹配文件夹

find . -type d -name "*data*" #查找文件夹名中包含 data 的文件夹
find . -type d -iname "*example*" #文件夹名中包含 example 且不区分大小写的文件夹