【发布时间】:2019-01-12 15:27:33
【问题描述】:
我想使用 bash 删除目录中不在文件扩展名关联数组中的所有文件。 (例如,删除目录中不是图像文件的所有文件)
This question 非常清楚地回答了如何为单个文件扩展名执行此操作,但我不确定如何为整个列表执行此操作。
目前我在做this
for f in $(find . -type f ! -name '*.png' -and ! -name '*.jpg' ); do rm "$f"; done
但在每个文件类型的括号内添加大量“-and -name '*.aaa'”列表似乎很难看。
有没有办法将find 传递给关联数组,例如
declare -A allowedTypes=([*.png]=1 [*.jpg]=1 [*.gif]=1)
还是我只需要添加很多“-and !-name ___”?
谢谢!
【问题讨论】:
标签: bash search filter associative-array