【linux文件批量操作】批量删除指定文件夹

需求描述

在使用 linux 服务器运行代码保存 checkpoint 或处理工程文件时,经常会涉及文件或文件夹的批量操作,以删除 checkpoint 文件夹为例。

以下是某次模型训练保存的 checkpoint 文件

.
├── checkpoint-1000
├── checkpoint-2000
├── checkpoint-15000
├── runs
└── others

如果现在不想保留之前老旧的 checkpoint,如 checkpoint-1000/2000,可以通过 find 命令嵌套搭配 rm 命令实现,具体如下。

方法一

find . -maxdepth 1 -type d ! -name 'checkpoint-15000' ! -name 'runs' ! -name '.' -exec rm -rf {} +

其中,各部分的具体含义为:

  • 使用 find 命令从当前目录开始搜索(.)。
  • 限制搜索深度为1层目录(-maxdepth 1)。
  • 搜索类型为目录(-type d)。
  • 排除名称为 checkpoint-15000 的目录(! -name ‘checkpoint-15000’)。
  • 排除名称为 runs 的目录(! -name ‘runs’)。
  • 排除当前目录本身(! -name ‘.’)。
  • 对搜索结果执行删除操作(-exec rm -rf {} +)。
    • -exec:这是 find 命令的一个选项,用来执行指定的命令。
    • rm -rf:这是要执行的命令,其中:
      • rm 是删除文件或目录的命令。
      • -r 选项表示递归删除,用于删除目录及其内容。
      • -f 选项表示强制删除,不会提示确认。
    • {}:这是一个占位符,表示 find 命令找到的每一个文件或目录。find 会用找到的文件或目录替换这个占位符。
    • +:表示以批处理方式执行命令,即 find 会尽可能多地收集文件名,并将它们作为一个批次传递给 rm 命令。这样可以减少命令执行次数,提高效率。

方法二

也可以使用稍有区别的另外一条指令改善指令可读性,原理同上。

find . -mindepth 1 -maxdepth 1 -type d ! -name 'checkpoint-15000' ! -name 'runs' -exec rm -rf {} +
  • 7
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值