我想知道如何删除文件夹的所有内容(它包含其他文件夹和一些文件),除了2个文件夹及其内容
以下命令会保留文件夹 conf 并删除所有其他文件夹
找到。 ! -name'conf'-type d -exec rm -rf {} +
我试图像下面那样管道它
找到。 -maxdepth 1-type d! -name'conf'|找到。 -maxdepth 1-type d! -name'foldername2'
但没有奏效。
是否可以使用单个命令
答案 0 :(得分:0)
您还没有指定您正在使用哪个shell,但如果您正在使用bash,则扩展的Glob可以提供帮助:
printf '%s\n' !(@(conf|foldername2)/)
如果您对由此产生的文件和目录列表感到满意,那么将相同的glob传递给rm -rf
:
rm -rf !(@(conf|foldername2)/)
在脚本中,您可能需要使用shopt -s extglob
启用extglob。稍后,您可以将-s
更改为-u
以取消设置选项。
如果您使用的是其他shell,则可以为find
命令添加更多选项:
find -maxdepth 1 ! -name 'conf' -a ! -name 'foldername2' -exec rm -rf {} +
首先尝试不使用-exec
部分打印匹配而不是删除所有内容。
答案 1 :(得分:0)
我的小程序实用程序可以帮助你。我希望如此。
首先,您应该找到文件.sh
的路径
然后你应该找到包含那些文件.sh
的主文件夹
然后删除除那些文件夹之外的任何内容
我写了drr这样的目的,它可以轻松完成这样的任务
drr,代表:根据D语言中的正则表达式删除或重命名文件。所以你必须在使用之前编译它。
见截图:
请注意,因为这不适合初学者。