我有一个类似的目录结构
- 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) }'