删除除特定文件夹外的所有内容

时间:2015-01-06 23:16:10

标签: terminal rm

我想知道我会传递给rm -rf除了.git/文件夹之外的所有选项。我正在阅读手册页但是我对你可以传入的选项感到困惑。如果我想删除除.git/以外的所有选项,那么该命令是什么?

3 个答案:

答案 0 :(得分:1)

一种可能的解决方案是使用find查找目录中 .git然后rm的所有项目:

> find . -mindepth 1 -maxdepth 1 ! -name .git -print0| xargs -0 rm -rf;

答案 1 :(得分:1)

使用bash:

shopt -s extglob
rm -rf !(.git)

warning http://pix.toile-libre.org/upload/original/1377510865.png 在运行此命令之前,请注意保持在良好的目录中。

检查http://mywiki.wooledge.org/glob#extglob

答案 2 :(得分:1)

您可以使用bash GLOBIGNORE变量删除除特定文件之外的所有文件

来自bash(1)页面:

A colon-separated list of patterns defining the set of filenames to be ignored
by pathname expansion. If a filename matched by a pathname expansion pattern
also matches one of the patterns in GLOBIGNORE, it is removed from the list
of matches.

要删除除zip和iso文件以外的所有文件,请按如下方式设置GLOBIGNORE:

GLOBIGNORE=*.git
rm -rf *
unset GLOBIGNORE

PS。仅适用于BASH