根据递归文件夹中的文本文件名称选择文本文件,并对其进行压缩



我有一个类似的目录结构

  • B01
  • B02
  • B12
  • B17R
  • B35

在每个目录中,我都有很多归档文件。我想选择所有包含在其文件名"中的文件;2019";,压缩它们(并最终删除它们(以获得这些文件

  • B01_2019.zip
  • B02_2019.zip
  • B12_2019.zip
  • B17R_2019.zip
  • B35_2019.zip

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

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) }'

最新更新