使用 rm -rf 跳过某些目录

使用 rm -rf 跳过某些目录

我想知道在操作期间是否以及如何可以跳过某些目录rm -rf

例如,该位置包含以下子文件夹(实际上这只是示例):

foo
bar
elf
qrs

在我的脚本在此目录中执行期间rm -rf *,我想知道是否可以(例如)跳过删除elf.

通常,我可以将每个目录传递给命令rm -rf foo bar qrs,但是我的情况是,因为这是在许多不同系统的脚本中,所以每个系统都会有不同的文件夹。例如,系统 1 可能包含这些:

foo
bar
elf
qrs

虽然 system2 可能包含这些:

ubt
dbn
arc
elf
gnt

我希望rm -rf两者的命令相同;删除除 之外的所有内容elf

这有可能吗?

先感谢您。

答案1

根据没有内置的排除功能rm。不过,本文详细介绍了使用一些 shell 命令来实现相同结果的多种方法。

第一个似乎最适合您:

删除除名为 important.txt 的文件之外的所有文件:
rm !(important.txt)

答案2

可能的解决方案之一:

find -type d ! -name "elf" -delete

相关内容