我有一个嵌套的文件夹层次结构,包含数百个格式为[a-z]的文件。[0-9] .h5
其中[a-z]可以是任何长度的字母数字,[0-9]可以是任意数量的数字但总是数字,并且扩展名是固定的,h5。
e.g。
等
为节省空间,我想删除所有EVEN文件
e.g。这些仍然存在:
但是这些
我知道如何在python中执行此操作,遍历所有目录,分割点,检查和删除。但我觉得这应该可以使用rm -rf(或find)和regex的单个bash命令。这可能吗?
注意:将来为了节省更多空间,我可能希望删除3个文件中的每2个。即,只有当(i%n == 1)其中i是文件的索引时,一般模式才是KEEP,而n是任意数字(例如2或3)
答案 0 :(得分:3)
你应该能够使用这样的东西:
shopt -s globstar failglob
rm -rf **/model*_weights.*{0,2,4,6,8}.h5
在运行之前,我会将rm -rf
更改为echo
!或者,printf '%s\n'
会提供更清晰的输出。
shell选项globstar
允许您使用**
进行递归匹配。 failglob
确保在没有与模式匹配的情况下不运行命令。