我在Unix中有这样的目录结构 A是父目录-> B C D是子目录--->具有X Y Z目录的B目录。
我想删除除X子目录之外的所有子目录。
我已经尝试过这种方式。
find * -name 'X' -prune -o -exec rm -rf '{}' ';'
此命令删除所有目录。unix
中解决我问题的代码是什么?
答案 0 :(得分:0)
通常,如果您的目录结构为:a/b/c/
mv a/b/c/ .
-将目录c/
移至您的密码.
(当前工作目录)
然后
rm -r a/
-将递归 删除 a/
和所有子目录(即b/
)
这些可以与mv a/b/c/ . ;rm -r a/
一起在一行中执行,但是,我建议单独执行,因此在递归删除其他子目录之前,您可以检查一下以确保目标的内容正确移动了。
注意:除了使用.
指定密码以外,您还可以指定其他目录路径。
最后但并非最不重要的一点是,如果您不确定某些命令的工作方式,那么UNIX手册页是很好的参考资料。要使用它们,请键入man <command>
,例如man mv
或man rm
。
答案 1 :(得分:0)
拥有对目录X的写权限时,可以使用权限
仅用A / B / X(和X的子目录)完成
find . -type d -name X -exec chmod -w {} \;
rm -fr A 2>/dev/null
find . -type d -name X -exec chmod +w {} \;
用A / X完成(并且只有一个名为X的子目录),您需要一步
find . -type d -name X -exec mv {} A/ \; -quit
chmod -w A/X
rm -fr A
chmod +w A/X