我有如下文件夹树:
parent folder
....folder A
....folder B
....folder 1
....folder 2
....folder C
....folder 1
....folder 2
....folder D
....folder 1
....folder 2
.
.
每个文件夹里都有一些文件。这些文件具有不同的扩展名(zip、tar.gz、jpeg、bmp、csv、xlsx、doc、txt...等)
如何删除文件夹中除*.jpeg 文件之外的所有文件。
如何删除文件夹中除多种类型文件之外的所有文件(例如,文件 *.jpeg 、 *.csv 除外)
为了实现这一目标,我正在考虑使用以下命令:
find . type -f -exec
但不知道怎么完成!...
还有其他方法可以做到吗?
答案1
find . type -f ! -name '*.jpeg' ! -name '*.csv' -delete
读作:遍历当前目录;当您发现一个文件是常规文件,且其名称不匹配*.jpeg
,并且其名称不匹配时*.csv
,则将其删除。
如果您的版本find
没有-delete
,请find
调用rm
命令:replate -delete
by -exec rm {} +
。
在 zsh 中(setopt extended_glob
打开),*~(PATTERN)
匹配所有不匹配的文件PATTERN
。使用全局限定符 D
包括点文件并.
仅包括常规文件。更改.
为^/
删除所有非目录(与排除模式匹配的目录除外)。
rm **/*~*.(jpeg|csv)(D.)