您正在使用IPV4(3.236.138.35)访问本站 您本次共访问本站 1 次
 用户名: 密 码: 验证码:     用QQ登录本站
首页 软件 编程 笑话 知识 公告 台风 日历 计算器
[公益]文明驾车我带头,文明行路我带头,礼貌让座我带头       悟空收录网      

【腾讯云】云服务器等爆品抢先购,低至4.2元/月      
[公益] 节省一分零钱 献出一份爱心 温暖世间真情      
2023年 元宵节 8
2023年 情人节 17
2024年 元 旦 338
2024年 春 节 378
 
您现在的位置:首页 >> Linux >> 内容
本类新增
本类热门文章
Linux实现彻底清理空文件夹的方法详解
内容摘要: #!/bin/bashdelete_empty_dirs_once(){localdirPath=$1if[!-d'${dirPath}'];thenecho'文件夹不存在:${dirPath}'return0filocallsStrInDEDO=$(ls-a'${dirPath}')localarrayInDEDO=(${lsStrInDEDO})if[$......
#!/bin/bash

delete_empty_dirs_once(){

localdirPath=$1

if[!-d"${dirPath}"];then

echo"文件夹不存在:${dirPath}"

return0

fi

locallsStrInDEDO=$(ls-a"${dirPath}")

localarrayInDEDO=(${lsStrInDEDO})

if[${#arrayInDEDO[@]}-le2];then

rm-rf"${dirPath}"

echo"删除空文件夹:${dirPath}"

echo"${dirPath}">>empty_dirs.txt

emptyDirNumForOnce=$(($emptyDirNumForOnce+1))

emptyDirNumForAll=$(($emptyDirNumForAll+1))

return1

else

localflag=0

foritemin"${arrayInDEDO[@]}";do

localitemPath="${dirPath}/${item}"

if["$item"!="."]&&["$item"!=".."]&&[-d"${itemPath}"];then

delete_empty_dirs_once"${dirPath}/${item}"

if[$?-eq1];then

flag=1

fi

fi

done

return$flag

fi

}

delete_empty_dirs(){

localtopDirPath=$1

if[!-d"${topDirPath}"];then

return1

fi

emptyDirNumForAll=0

deleteTime=0

localflag=1

while[$flag-eq1];do

emptyDirNumForOnce=0

deleteTime=$(($deleteTime+1))

delete_empty_dirs_once"${topDirPath}"

flag=$?

echo"第${deleteTime}轮清理,删除了${emptyDirNumForOnce}个空文件夹。"

done

echo"进行了${deleteTime}轮清理,总共删除了${emptyDirNumForAll}个空文件夹。"

}

delete_empty_dirs"$1"

使用方法

在需要Linux中,将代码通过vim或者cat写入到一个shell脚本文件,如clean.sh,并通过chmod+x赋予该文件可执行权限,然后通过./<脚本文件名><待清理的路径>执行清理任务。例如./clean.sh/root/geoscene/geoscene,注意路径的最后不要带/。

测试效果

本文的脚本会统计最后删除了多少个空文件夹,并将全部的删除记录打印到控制台,同时将删除文件清单输出到脚本所在文件夹下的output.txt文件中。

总结

本脚本通过循环和递归将整个任务分解成一轮一轮的清理任务,直到再也找不到空文件夹为止。

补充

当然Linux还可以实现自下而上的删除空文件夹,下面是实现方法

需求

在工作中遇到一个需求:

删除一个指定的文件夹,如果删除后,其上一层文件夹也是空文件夹,则也删除其上一层文件夹;

如果删除其上一层文件夹后,上一层文件夹的再上一层文件夹也是空,也删除再上一层文件夹;

依次类推,直到删除到一个指定的文件层级;

shell脚本实现;

简单地说就是要自下而上地删除Linux的空文件夹。

实现

以下是完成的shell方法,,经过测试,能正常使用。

代码

delete_empty_dir(){

fromDirInDED="$1"

toDirInDED=$2

if["$fromDirInDED"=""]||["$toDirInDED"=""]||[${#fromDirInDED}-lt${#toDirInDED}];then

echo"delete_empty_dir方法参数错误。"

return1

fi

if[!-d"$fromDirInDED"];then

echo"文件夹不存在:${fromDirInDED}。"

return1

fi

if["$fromDirInDED"="$toDirInDED"];then

echo"抵达最终文件层级。"

return0

fi

lsStrInDED=`ls-a${fromDirInDED}`

arrayInDED=(${lsStrInDED})

if[${#arrayInDED[@]}-le2];then

rm-rf"${fromDirInDED}"

echo"删除空文件夹:${fromDirInDED}"

delete_empty_dir`dirname${fromDirInDED}`"${toDirInDED}"

else

echo"此文件夹非空:${fromDirInDED}。"

echo"完成空文件夹清理。"

fi

}

使用说明

该方法需要两个参数,第一个参数为需要删除的最下一层文件夹的绝对路径,该文件夹无论是不是为空,都会被删除,第二个参数为停止删除的文件夹的绝对路径。

如:需要删除/root/myApps/laoWang/CSDN/blogs/test/shell目录,并判定其上层文件夹是否为空文件夹,如果为空也将删除,直到/root/myApps/laoWang才停止删除操作。

那么完成上述需求的执行代码为:delete_empty_dir /root/myApps/laoWang/CSDN/blogs/test/shell /root/myApps/laoWang

版权声明:本内容来源于网络,如有侵犯您的版权,请联系站长,本站收到您的信息后将及时处理。
上一篇:Linux 禁止和开启Ping 下一篇:Linux 中如何检查开放的端口
发布日期:2022/10/27
手机扫二维码直达本页
发布时间:13:34:33
点  击:18
录  入:齐天大圣
相关文章
Baidu

YiJiaCMS 6.3.5.220928(MSSQL) 闽ICP备05000814号-1
本空间由腾讯云(轻量应用服务器)提供,百度云加速提供加速防护
Copyright©2000-2023