删除除特定文件夹以外的所有内容
Delete everything but a specific folder
我想知道我会向 rm -rf
传递什么选项来删除除 .git/
文件夹以外的所有文件夹。我正在阅读手册页,但我对您可以传入的选项感到困惑。如果我想删除除 .git/
以外的所有命令,命令是什么?
一个可能的解决方案是使用 find
查找目录中 不是 .git
的所有项目,然后 rm
它们:
> find . -mindepth 1 -maxdepth 1 ! -name .git -print0| xargs -0 rm -rf;
与bash :
shopt -s extglob
rm -rf !(.git)
注意在 运行 这个命令之前在 good 目录中。
您可以使用 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
我想知道我会向 rm -rf
传递什么选项来删除除 .git/
文件夹以外的所有文件夹。我正在阅读手册页,但我对您可以传入的选项感到困惑。如果我想删除除 .git/
以外的所有命令,命令是什么?
一个可能的解决方案是使用 find
查找目录中 不是 .git
的所有项目,然后 rm
它们:
> find . -mindepth 1 -maxdepth 1 ! -name .git -print0| xargs -0 rm -rf;
与bash :
shopt -s extglob
rm -rf !(.git)
您可以使用 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