war*_*ren 8 mount bash exclude recursion disk-cleanup
我经常使用绑定挂载来帮助在多个位置提供可用空间,而不必拥有多个逻辑卷/物理分区/LUN 等。
例如,我可能有一个 200G LV 安装在/space. 从那里,我将创建子目录 like var_optand var_log,然后我可以将 mount分别绑定到/var/opt和/var/log。
在“空间”目录上进行清理时,是否可以从正在运行的内部排除目录?rm -rf/space
例子:
# pwd
/space
# rm -rf * {except-for-var_opt-and-var_log}
Run Code Online (Sandbox Code Playgroud)
是否有不同或更好(但同样简单)的方法来完成我没有想到的我正在尝试做的事情?
Gil*_*il' 14
概念简单,出错风险低:
mkdir TO_DELETE
mv * TO_DELETE
mv TO_DELETE/var_opt TO_DELETE/var_log .
rm -rf TO_DELETE
Run Code Online (Sandbox Code Playgroud)
忽略mv关于移动TO_DELETE到自身子目录的错误。
您还可以使用 ksh 的扩展 glob:
rm -rf !(var_opt|var_log)
Run Code Online (Sandbox Code Playgroud)
如果您启用它们,这些也可以在 bash 中使用:
shopt -s extglob
rm -rf !(var_opt|var_log)
Run Code Online (Sandbox Code Playgroud)
在 zsh 中同上:
setopt ksh_glob
rm -rf !(var_opt|var_log)
Run Code Online (Sandbox Code Playgroud)
Zsh 也有自己的扩展 globs:
setopt extended_glob
rm -rf ^var_(opt|log)
Run Code Online (Sandbox Code Playgroud)
也许与 find + xargs + rm 组合?
find /space ! -iregex '(var_opt|var_log)' | xargs rm -f
或那种曲调的东西。当然,在将其更改为 rm 之前,首先指示 xargs 执行一些更无害的操作(例如 echo)可能是明智的...
| 归档时间: |
|
| 查看次数: |
25057 次 |
| 最近记录: |