linux 递归删除 空目录命令,使用shell脚本实现递归删除空目录
平时一般使用php脚本实现一些文件管理功能,总归没有shell脚本强大,虽然本人不会写shell脚本,但是读懂shell脚本还是没问题的。对于“递归删除空目录”这样简单的功能使用php来写有点麻烦,从网上搜到这样一个shell脚本实现非常简单:#!/bin/bash
# author: 十年后的卢哥哥
# des: delete empty directories recursive
deleteempty() {
find ${1:-.} -mindepth 1 -maxdepth 1 -type d | while read -r dir
do
if [[ -z "$(find "$dir" -mindepth 1 -type f)" ]] >/dev/null
then
echo "$dir"
rm -rf ${dir} 2>&- && echo "Empty, Deleted!" || echo "Delete error"
fi
if [ -d ${dir} ]
then
deleteempty "$dir"
fi
done
}
deleteempty
然后将这段代码保存为deleteempty.sh,然后将保存后的shell脚本放置到待删除的目录下,直接执行sh deleteempty.sh即可递归删除所有的空文件夹。
仔细读一下代码,发现作者其实已经实现了传参删除目录的功能,完全可以传入待删除目录的参数。于是,我将其改编如下:#!/bin/bash
# author: 十年后的卢哥哥
# des: delete empty directories recursive
deleteempty() {
find ${1:-.} -mindepth 1 -maxdepth 1 -type d | while read -r dir
do
if [[ -z "$(find "$dir" -mindepth 1 -type f)" ]] >/dev/null
then
echo "$dir"
rm -rf ${dir} 2>&- && echo "Empty, Deleted!" || echo "Delete error"
fi
if [ -d ${dir} ]
then
deleteempty "$dir"
fi
done
}
name=$1
deleteempty "$name"
使用$1来获取第一个参数,然后传给deleteempty函数进行递归删除,亲测可用。
案例:建立一个test目录,将deleteempty.sh上传至test目录,其子目录结构如下,[root@localhost test]# cd /test
[root@localhost test]# du -a
0 ./dir3/dirC/file5
4 ./dir3/dirC
8 ./dir3
4 ./dir2/dirA
8 ./dir2
4 ./dir4/dirD
0 ./dir4/file4
8 ./dir4
4 ./deleteempty.sh
4 ./dir5/dirE/dir_V
8 ./dir5/dirE
12 ./dir5
4 ./dir1
48 .
使用命令进行删除,删除后目录结构如下:
sh deleteempty.sh /test[root@localhost test]# sh deleteempty.sh /test
/test/dir2
Empty, Deleted!
/test/dir4/dirD
Empty, Deleted!
/test/dir5
Empty, Deleted!
/test/dir1
Empty, Deleted!
[root@localhost test]# du -a
0 ./dir3/dirC/file5
4 ./dir3/dirC
8 ./dir3
0 ./dir4/file4
4 ./dir4
4 ./deleteempty.sh
20 .
很明显,与file4和file5相关的目录都没被删除,而空目录无论多深都被删除了。
再次改造一下,这里不再使用shell脚本,而是将该脚本转换为linux的命令——命令为deleteempty[root@localhost test]# vi /usr/sbin/deleteempty
粘贴刚才的shell代码并保存退出
[root@localhost test]# chmod +x /usr/sbin/deleteempty
[root@localhost test]# which deleteempty
/usr/sbin/deleteempty
这时deleteempty可以作为一个简单的linux命令进行带参数删除,效果是一样的!
转载随意,但请附上文章地址:-)
linux 递归删除 空目录命令,使用shell脚本实现递归删除空目录相关推荐
- linux递归删除空文件夹,Shell脚本实现递归删除空文件夹
有时我们需要递归删除空文件夹,网上找了一下,没有发现比较好的Shell脚本,于是自己动手写了一个 脚本 #!/bin/bash # author: 十年后的卢哥哥 # des: delete empt ...
- linux中循环删除脚本,shell脚本:遍历删除
遍历删除文本内路径上文件 windows上测试可以安装Git linux中,准备删除文件的脚本deleteFile.sh,picture.txt保存待删除文件的文件路径,picture文件夹下面有三张 ...
- Linux系统中运行.sh(Shell脚本)文件
本文转载自:百度经验:Linux下如何运行.sh文件 其中,以绝对路径运行方法: (1)./home/test/shell/hello.sh,可以这样运行是因为当前登录用户是root,当前路径是在/下 ...
- BASH命令和SHELL脚本学习
BASH命令和SHELL脚本学习 转载于:https://www.cnblogs.com/huolong123/p/6228049.html
- linux 删除网卡配置文件,linux-如何通过命令行/ shell脚本从etc / wpa_supplicant / wpa_supplicant.conf中删除网络配置文件...
我在etc / wpa_supplicant / wpa_supplicant.conf中保存了多个wifi网络ssid,如下所示, 我们可以从此wpa_supplicant.conf中删除特定的网络 ...
- linux命令行和shell脚本编程大全笔记
第1章 初识Linux shell 内存存储单元按组划分成很多块,这些块称作页面(page) Linux操作系统将运行中的程序称为进程.进程可以在前台运行,将输出显示在屏幕上,也 可以在 ...
- linux遍历目录删除指定文件,利用shell脚本遍历文件夹内所有的文件并作整理统计的方法-linux删除文件夹...
本篇文章扣丁学堂Linux培训小编给读者们分享一下利用shell脚本遍历文件夹内所有的文件并作整理统计的方法,文章具有很好的参考价值,感兴趣的小伙伴就随小编来了解一下吧. 环境: Ubuntu下采用s ...
- 《Linux命令行和Shell脚本开发圣经》:内容目录
致谢 导语 第一部分:Linux命令行 第一节:从Linux Shell开始 1 Linux是什么? 1.1 管窥Linux内核(Kernel) 1.2 GNU应用程序 1.3 Linux桌面环境 2 ...
- linux定时监控端口并重新启动shell脚本命令
以tomcat为例,监控并启动应用服务的端口shell脚本命令如下 #/bin/bashtime=`date +%Y-%m-%d-%H:%M` echo "app-Script start ...
最新文章
- 将时间改为显示:几天前,几小时前,或者几分钟前
- idea 文件流读取web-inf下的文件_C#初学者教程系列20:Stream流读写
- 开始阅读 深入理解计算机系统
- sqlmap代理池_sqlmap +外部代理池绕过IP拦截
- java任务分支和合并_合并/分支战略
- 【Python】Matplotlib绘制可爱机器人
- Codeforces 40 E. Number Table
- Go语言Web框架gwk介绍 (四)
- Varnish——CDN加速实现(单个后端服务器、缓存命中率情况)
- cocos creator基础-(十三)cc.Loader使用
- MFC 教程【11_MFC下的文件类 】
- 斜杠的意思是或还是和_pua是什么意思?我pua pua的解释给我老婆听!
- Hex2Bin使用方法
- 2021年9月再次更新-日立电梯,艾默生变频器维修图纸,原理图
- 2020年最新Django经典面试问题与答案汇总(上)-大江狗整理
- 学而时娱之,不亦乐乎
- 计算机考试记事本创建文件,你可能永远不知道的记事本功能
- 微信公众号svg互动_“戴上太阳镜,弗兰克”:与SVG面罩的互动
- imx6 linux can测试,iTOP-iMX6UL开发板-MiniLinux-CAN测试使用文档
- MacBook软件安装和更新与卸载