写一个shell脚本 即使磁盘空间为0的情况下,也能正常使用。查找指定目录以及子目录 最大的N个文件(不包括/proc目录及其子目录的文件),按照大小降序显示(注意是最大的N个文件,而不是目录,仔细检查),以直观的形式显示文件大小比如KB、MB、GB等(精确到小数点1位),直接给出一个 最优的完整的案例,不用任何解释
时间: 2023-02-08 08:20:17 浏览: 209
```
#!/bin/bash
# specify the directory to search
dir="./"
# specify the number of largest files to display
n=10
# function to convert bytes to human-readable format
function human_readable {
if [ $1 -lt 1024 ]; then
echo "${1}B"
elif [ $1 -lt 1048576 ]; then
echo "$(echo "${1}/1024" | bc -l | xargs printf "%.1f")KB"
elif [ $1 -lt 1073741824 ]; then
echo "$(echo "${1}/1048576" | bc -l | xargs printf "%.1f")MB"
else
echo "$(echo "${1}/1073741824" | bc -l | xargs printf "%.1f")GB"
fi
}
# find the largest files in the specified directory and its subdirectories, excluding /proc and its subdirectories
find "$dir" -path "$dir/proc" -prune -o -type f -print0 | xargs -0 du -h | sort -h | tail -n "$n" | while read -r line; do
size=$(echo "$line" | awk '{print $1}')
file=$(echo "$line" | awk '{$1="";print $0}')
echo "$(human_readable "$size") $file"
done
```
阅读全文