删除名称中没有字符的文件夹

删除名称中没有字符的文件夹

我有一个文件夹列表,除少数文件夹外,所有文件夹均在括号中标有年份:

./Folder 1 (2001)
./Folder 2 (2008)
./Folder 3
./Folder 4 (1994)
./Folder 5 (2005)
./Folder 6

我想删除以下文件夹(及其内容):没有括号通过命令行以它们的名称添加 。在上面的例子中,Folder 3Folder 6

我知道如果我想删除所有文件夹有括号在他们的标题中我可以这样做:

rm -rf *(*

但我不知道反过来该怎么做。

答案1

使用 bash 的扩展通配符(在 Ubuntu 中应该默认启用)

$ shopt extglob 
extglob         on

应该可以使用 glob 模式!(*\(*\)*)

例如

$ tree
.
├── Folder 1 (2001)
├── Folder 2 (2008)
├── Folder 3
├── Folder 4 (1994)
├── Folder 5 (2005)
└── Folder 6

6 directories, 0 files

然后

$ rm -ri !(*\(*\)*)
rm: remove directory 'Folder 3'? y
rm: remove directory 'Folder 6'? y

离开

$ tree
.
├── Folder 1 (2001)
├── Folder 2 (2008)
├── Folder 4 (1994)
└── Folder 5 (2005)

4 directories, 0 files

答案2

在 Bash 中,使用GLOBIGNORE

$ echo *
Folder  1 (2001) Folder  2 (2008) Folder  3 Folder  4 (1994) Folder  5 (2005) Folder  6
$ GLOBIGNORE='*\(*'
$ echo *
Folder  3 Folder  6

相关内容