记一次linux删除当前文件夹下的某一类文件或者文件夹

【转自】https://blog.csdn.net/with__sunshine/article/details/96352496

发现日志文件夹下面产生了很多无效的文件夹(docker启动项目失败后一直重试。。。。。),直接导致使用ls命令查看文件夹内容时,屏幕卡住了。。。。

首先使用了命令ls -l > /root/find_manager_folder_name.txt 将当前文件夹下的所有文件的名称输出到/root/find_manager_folder_name.txt,然后查看发现,文件竟然有5M多,里面包含了18w个文件夹,我丢。。。。。这就有点秀了。。。。。
在这里插入图片描述

如果能直接删除当前文件夹还好,为了防止删除正常的日志,于是想着删除其他无效的文件夹得了,将今天的正常的日志文件夹保留。

也就是博客题目提到的:删除当前某些文件夹

为了保险起见,我们要大致了解,我们需要删除的文件夹跟我们要保留的文件夹的区别,这样才能只删除该删除的。

首先还是先将所有的文件夹输出到文件中,这样方便我们筛选,我这里是将文件输出到/root目录下了。

接下来就是查找+删除

linux下刚好有这样的功能:find folderPath -option [-print] [-exec -ok command] {} \;

删除当前目录及其子目录下的所有xml文件: find . -type f -name '*.xml' -exec rm -rf {} \;

删除某个目录下及其子目录下的所有的.svn 文件夹: find /test/subtest -type d -name '.svn' -exec rm -rf {} \;

由于我这里文件夹命名方式是用时间来命名的,所以我首先尝试删除某一天的文件夹:

find /data/appslogs/manager -type d -name '2019-11-29*' -exec rm -rf {} \;
[root@docker_3_187 manager]# find /data/appslogs/manager -type d -name '2019-11-29*' -exec rm -rf {} \;
find:/data/appslogs/manager/2019-11-29_10:54:04_10.0.0.51: 没有那个文件或目录
find:/data/appslogs/manager/2019-11-29_10:52:13_10.0.0.39: 没有那个文件或目录
find:/data/appslogs/manager/2019-11-29_10:52:55_10.0.0.43: 没有那个文件或目录
find:/data/appslogs/manager/2019-11-29_10:50:24_10.0.0.31: 没有那个文件或目录
find:/data/appslogs/manager/2019-11-29_10:51:50_10.0.0.37: 没有那个文件或目录
find:/data/appslogs/manager/2019-11-29_10:53:47_10.0.0.49: 没有那个文件或目录
find:/data/appslogs/manager/2019-11-29_10:52:34_10.0.0.41: 没有那个文件或目录
find:/data/appslogs/manager/2019-11-29_10:51:24_10.0.0.34: 没有那个文件或目录
find:/data/appslogs/manager/2019-11-29_10:53:29_10.0.0.47: 没有那个文件或目录
find:/data/appslogs/manager/2019-11-29_10:47:53_10.0.0.15: 没有那个文件或目录
find:/data/appslogs/manager/2019-11-29_10:49:54_10.0.0.29: 没有那个文件或目录
find:/data/appslogs/manager/2019-11-29_10:54:22_10.0.0.54: 没有那个文件或目录
find:/data/appslogs/manager/2019-11-29_10:50:55_10.0.0.33: 没有那个文件或目录
find:/data/appslogs/manager/2019-11-29_10:53:13_10.0.0.45: 没有那个文件或目录
[root@docker_3_187 manager]# 

然后将剩余文件输出:ls -1 > /root/find_manager_folder_name_del_2019_11-29.txt

查看发现当前文件夹下确实没有2019-11-29当天的文件夹了。

接着就是直接删除2019-12开头的文件夹:find /data/appslogs/manager -type d -name '2019-12*' -exec rm -rf {} \;

由于文件夹过多,导致屏幕一直在输出find: ‘/data/appslogs/manager/2019-12.。。’: 没有那个文件或目录

我想在屏幕输出这些信息的时候,删除操作应该已经执行了,但是不知道怎么将这个输出给屏蔽掉,又担心ctrl+c给当前删除操作也给停掉了,只好等着屏幕自己跑完了。
在这里插入图片描述
最后使用ls查看,发现删除后只剩余了保留的文件夹,完美收官!

最后补充: Linux中find常见用法示例

find path -option [ -print ] [ -exec -ok command ] {} \;

#-print 将查找到的文件输出到标准输出

#-exec command {} ; —–将查到的文件执行command操作,{} 和 ;之间有空格,{} 表示find到的结果,最后有反斜杠\ 和 分号 ; 表示命令结束

#-ok 和-exec相同,只不过在操作前要询用户

#find 根据下列规则判断 path 和 expression(命令选项参数 -option),在命令列上第一个 – ( ) , ! 之前的部份为 path,之后的是 expression。如果 path 是空字串则使用目前路径,如果 expression 是空字串则使用 -print 为预设 expression。

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章