工作中遇到过日志文件夹里面存放的日志数量太多,直接使用rm -rf 删除提示参数太多,其实是因为要删除的文件太多,没法一次全部删除,具体rm -rf能够一次删除的数量是多少就不知道了,为了解决这个问题,写了个脚本,循环一个个删除。
需要指定要删除的路径和要删除文件的开头,因为一般日志的开头是一样的,可以防止误删除其他文件。
echo "该脚本是要删除指定文件夹下指定字符开头的文件,请注意安全使用" #for dirtory in $(ls /home/weiwei/test_shell/test) #do # echo "删除 $dirtory" # rm -rf $dirtory #done #read -p "输入要删除的文件夹路径: " path if read -t 10 -p "请输入要删除的文件夹路径: " path then echo "要删除的文件夹是: $path " else echo echo "超时了,退出" exit fi if [ "$path" == '' ] then echo "输入的路径是空,退出" exit fi #if read -t 5 -p "你确定要清空文件夹 $path 中的所有内容吗?(y/n) " answer #then # if [ $answer -eq "y" ] if [ -d $path ] then echo "要删除的路径存在" else echo "要删除的文件夹不存在,退出" exit fi #echo "开始删除" read -p "要删除文件的名称前缀: " beginname if read -t 5 -p "你确定要删除文件夹 $path 下以 $beginname 开头的文件吗?(y/n): " answer then # if [ "$answer" == "y" ] case $answer in Y|y) # then len=${#beginname} for file in $path/* do echo "This is : $file" name=$(basename $file) echo "name: $name" echo ${name:0:$len} if [[ ${name:0:$len} == $beginname ]] then echo " $file 以 $beginname 开头,删除他.. $file" rm -rf $file else echo " $file 不是以 $beginname 开头,不删除他" fi done ;; #else *) echo "你没有回答yes,退出" exit ;; #fi esac else echo "输入超时,退出" exit fi
