清除除特定类型文件之外的文件夹

清除除特定类型文件之外的文件夹

我有如下文件夹树:

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...等)

  1. 如何删除文件夹中除*.jpeg 文件之外的所有文件。

  2. 如何删除文件夹中除多种类型文件之外的所有文件(例如,文件 *.jpeg 、 *.csv 除外)

为了实现这一目标,我正在考虑使用以下命令:

find . type -f -exec  

但不知道怎么完成!...

还有其他方法可以做到吗?

答案1

find . type -f ! -name '*.jpeg' ! -name '*.csv' -delete

读作:遍历当前目录;当您发现一个文件是常规文件,且其名称不匹配*.jpeg,并且其名称不匹配时*.csv,则将其删除。

如果您的版本find没有-delete,请find调用rm命令:replate -deleteby -exec rm {} +

在 zsh 中(setopt extended_glob打开),*~(PATTERN)匹配所有不匹配的文件PATTERN。使用全局限定符 D包括点文件并.仅包括常规文件。更改.^/删除所有非目录(与排除模式匹配的目录除外)。

rm **/*~*.(jpeg|csv)(D.)

相关内容