使用 rm 删除除一个文件夹之外的所有文件

使用 rm 删除除一个文件夹之外的所有文件

我想使用 rm -rf 删除文件夹内的文件/文件夹,但跳过或忽略特定文件夹。

有人建议将其与另一个问题重复,但事实并非如此。另一个问题询问跳过文件。我想跳过一个文件夹及其所有内容。

答案1

这:

find . -mindepth 1 -maxdepth 1 -not -name '.svn' -print0 | xargs -0 -r rm -rf

我相信它会按照你的要求执行。它会跳过 .svn 目录及其内容,但会删除其他所有内容,包括文件和目录,包括当前目录和任何子目录中以“.”开头的文件和目录。

答案2

它是评论中链接的重复...无论如何,对于目录:

find . ! \( -type d -and -iname "test" \)

查看test目录是否被跳过。

然后:

find . ! \( -type d -and -iname "test" \) -delete

find . ! -iname "test"适用于文件和目录。

答案3

查找 . -not -path ./.svn/* !-name .svn

本质上,第一部分排除该目录中的所有文件,第二部分排除目录本身。

相关内容