1.01 找出某个目录下超过50M的文件

思路: 1、如何输入要处理的目录(要进行搜索的目录),如果不输入目录会报错退出,如果输入的目录格式不同会执行不同操作
2、如何定义不同的操作,这里面包括:如何获取目标目录下的文件,如何获取符合要求的文件,如何输出符合要求的文件 3、变量处理,按照脚本规范原则,对于脚本中出现的特定数值一律通过全局变量来定义
4、汇总脚本

下面一层层来解决
1)如何输入要处理的目录,如果不输入会报错退出,如果输入的目录格式不同执行不同的下一步

# 指定输入的目录方式为位置参数,同时如果不输入位置参数会报错退出
[ $# -ne 1 ] && { echo "Usage: $(basename $0) needs one argument.";exit 1; }
dir=$1
# 根据不同目录格式,执行不同的函数操作   
[[ ! $dir == /* ]] && { Dir="/${dir}";finddir1; } || { finddir2; }

2)如何定义不同的操作
操作1

# 获取目标目录下所有文件   
du -sm $dir > dir.txt    
# 获取符合要求的文件   
# 输入目标目录下的所有文件
while read size file 
do
# 按照要求过滤出符合要求的文件并输出      
[ $size -gt 50 ] && echo -e "$size\t\t$file"
done <dir.txt  

操作2

# 获取目标目录下所有文件   
du -sm $Dir > dir.txt    
# 获取符合要求的文件   
# 输入目标目录下的所有文件
while read size file 
do
# 按照要求过滤出符合要求的文件并输出      
[ $size -gt 50 ] && echo -e "$size\t\t$file"
done <dir.txt  

3)使用全局变量处理特定数值
declare -i size Size Size=50

4)汇总脚本

#!/bin/bash

finddir1 () {
du -sm $dir/* > dir.txt
while read size file
do
[ $size -gt $Size ] && echo -e "$size\t\t$file"
done <dir.txt
}

finddir2 () {
du -sm $Dir/* > dir.txt
while read size file
do
[ $size -gt $Size ] && echo -e "$size\t\t$file"
done <dir.txt
}

[ $# -ne 1 ] && { echo "Usage: $(basename $0) needs one argument.";exit 1; }
dir=$1
declare -i size Size
Size=50
[[ ! $dir == /* ]] && { Dir="/${dir}";finddir2;exit 0; } || { finddir1; }

上一页➡️

下一页➡️

Calendar Oct 14, 2023
Edit Edit this page
本站总访问量:  次 您是本站第  位访问者