假设我的目录中有这些文件。
├── __init__.py
├── __init__.pyc
├── __pycache__
├── recognizer.wsgi
├── requirements.txt
├── src
└── upld
其中我想删除除upld
目录之外的所有内容。我想知道是否有任何快速且更好的方法来做到这一点。
谢谢。
答案1
find . -path ./upld -prune -o ! -path . -print
这将用于find
删除当前目录中的所有内容,包括子目录。但是,该路径./upld
不会被删除(请注意,这必须是您要跳过的内容在初始搜索路径中的完整相对路径)。
运行它并检查输出,然后替换-print
为-delete
.
安全选项,来自相关目录的父目录:
mkdir newdir
mv olddir/upld newdir
rm -rf olddir
mv newdir olddir
也就是说,upld
为了安全起见,将子目录移开,然后完全删除旧目录。
答案2
假设您正在使用bash
,至少有几种方法。我建议您先使用ls
or进行操作echo
,当您对结果感到满意时再尝试rm
。
1 明确要删除的内容,例如:
ls -d [_a-s]*
2 明确你想要保留的内容,例如:
shopt -s extglob # just once per session
ls -d !(upld)
您可以找到有关 bash 模式匹配的更多信息这里。