首页 > 解决方案 > 根据递归文件夹中的名称选择文本文件,压缩它们

问题描述

我有这样的目录结构

在每个目录中,我都有很多存档文件。我想选择文件名“2019”中包含的所有文件,压缩它们(最后删除它们)以获取这些文件

在 bash 中实现它的最有效方法是什么?谢谢

标签: bashzip

解决方案


awk 是这里的一个选项:

find /parentdir -maxdepth 2 -name "*2019*" | awk -F\/ '{ print "zip /"$2"/"$3"/"$3"_2019.zip "$0" && rm "$0 }'

我们从 find 命令获取输出,然后根据 -F/ 指定的正斜杠分隔字段打印每个条目所需的命令

一旦我们验证了命令是否按要求读取(这一步非常重要!),我们可以使用 awk 的系统函数来执行命令,因此:

find /parentdir -maxdepth 2 -name "*2019*" | awk -F\/ '{ system("zip /"$2"/"$3"/"$3"_2019.zip "$0" && rm "$0) }'

推荐阅读