设为首页 收藏本站
查看: 783|回复: 0

Linux shell批量删除指定目录下的所有目录的编程思路

[复制链接]

尚未签到

发表于 2018-8-24 08:55:09 | 显示全部楼层 |阅读模式
  应用场景:某个目录中存放着许多软件的源码压缩包,在部署完这些软件后,一定会生成许多没用的临时目录,可以通过脚本的方式删除该目录下所有的目录。当这个目录中存在着一些特殊名字的目录时,例如这些目录中有Linux系统所不支持的特殊字符“/”(这些文件通常有可能是Windows系统所支持的)或有目录名中有空格,那批量删除这些目录就会变得困难。
  问题分析与解决办法:
  问题1.当前工作目录中有一些重要的目录可能不想被删除
  解决办法:排除这些目录即可
  问题2.需要考虑一些特殊的目录名称,诸如“test dir”,“2015/03/11-log”,“下载”
  解决办法:利用inode消除用户命名空间所带来的特殊性
  背景知识:
  inode是index node或information node的缩写,是一种特殊的结构用于存放文件的基本信息,这些信息包括文件的所有者、类型、访问权限和存放在磁盘中实际数据的位置。inode存放在每一个文件系统的inode表(inode table)中。
  Index or Information Node. This is a structure containing the basic information about a file such as owner, type, access permissions and pointers to the actual data on the disk. Inodes are stored in the per filesystem inode table and are referenced through inode numbers. --http://www.linux-tutorial.info/modules.php?name=MContent&obj=glossary&term=inode
  如果Linux系统经常与Windows系统中的磁盘或文件进行交互,建议安装mtools,此工具能在不挂载Windows磁盘格式磁盘的情况下,进行读写等操作。
  Summary     : Programs for accessing MS-DOS disks without mounting the disks
  Description : Mtools is a collection of utilities for accessing MS-DOS files.
  : Mtools allow you to read, write and move around MS-DOS filesystem
  : files (normally on MS-DOS floppy disks).  Mtools supports Windows95
  : style long file names, OS/2 XDF disks, and 2m disks
  :
  : Mtools should be installed if you need to use MS-DOS disks
  shell实例(核心步骤):
#!/bin/bash  
WORK_DIRECTORY_NAME=.
  
EXCLUDE_DIRECTORY_NAME=python
  
INODE_OF_EXCLUDE_DIRECTORY_NAME=$(ls -id $EXCLUDE_DIRECTORY_NAME |awk '{print $1}')
  
INODE_OF_CURRENT_DIRECTORY_NAME=$(ls -Fi $WORK_DIRECTORY_NAME | grep \/ | awk '{print $1}')
  
INODE_OF_REMOVE_DIRECTORY_NAME=$(echo $INODE_OF_CURRENT_DIRECTORY_NAME | sed "s/$INODE_OF_EXCLUDE_DIRECTORY_NAME//g")
  
for INODE in $INODE_OF_REMOVE_DIRECTORY_NAME; do
  
    find $WORK_DIRECTORY_NAME -inum $INODE -exec rm -rf {} \;
  
done
  实际操作结果(仅演示效果不做具体操作):
DSC0000.jpg

  --END--



运维网声明 1、欢迎大家加入本站运维交流群:群②:261659950 群⑤:202807635 群⑦870801961 群⑧679858003
2、本站所有主题由该帖子作者发表,该帖子作者与运维网享有帖子相关版权
3、所有作品的著作权均归原作者享有,请您和我们一样尊重他人的著作权等合法权益。如果您对作品感到满意,请购买正版
4、禁止制作、复制、发布和传播具有反动、淫秽、色情、暴力、凶杀等内容的信息,一经发现立即删除。若您因此触犯法律,一切后果自负,我们对此不承担任何责任
5、所有资源均系网友上传或者通过网络收集,我们仅提供一个展示、介绍、观摩学习的平台,我们不对其内容的准确性、可靠性、正当性、安全性、合法性等负责,亦不承担任何法律责任
6、所有作品仅供您个人学习、研究或欣赏,不得用于商业或者其他用途,否则,一切后果均由您自己承担,我们对此不承担任何法律责任
7、如涉及侵犯版权等问题,请您及时通知我们,我们将立即采取措施予以解决
8、联系人Email:admin@iyunv.com 网址:www.yunweiku.com

所有资源均系网友上传或者通过网络收集,我们仅提供一个展示、介绍、观摩学习的平台,我们不对其承担任何法律责任,如涉及侵犯版权等问题,请您及时通知我们,我们将立即处理,联系人Email:kefu@iyunv.com,QQ:1061981298 本贴地址:https://www.yunweiku.com/thread-555774-1-1.html 上篇帖子: shell脚本 监控 web服务器状态 下篇帖子: shell脚本:批量修改文件扩展名
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

扫码加入运维网微信交流群X

扫码加入运维网微信交流群

扫描二维码加入运维网微信交流群,最新一手资源尽在官方微信交流群!快快加入我们吧...

扫描微信二维码查看详情

客服E-mail:kefu@iyunv.com 客服QQ:1061981298


QQ群⑦:运维网交流群⑦ QQ群⑧:运维网交流群⑧ k8s群:运维网kubernetes交流群


提醒:禁止发布任何违反国家法律、法规的言论与图片等内容;本站内容均来自个人观点与网络等信息,非本站认同之观点.


本站大部分资源是网友从网上搜集分享而来,其版权均归原作者及其网站所有,我们尊重他人的合法权益,如有内容侵犯您的合法权益,请及时与我们联系进行核实删除!



合作伙伴: 青云cloud

快速回复 返回顶部 返回列表