如何删除unix中除一个子文件夹外的所有子文件夹

时间:2018-06-21 06:55:24

标签: unix ksh

我在Unix中有这样的目录结构 A是父目录-> B C D是子目录--->具有X Y Z目录的B目录。

我想删除除X子目录之外的所有子目录。

我已经尝试过这种方式。

find * -name 'X' -prune -o -exec rm -rf '{}' ';'

此命令删除所有目录。unix中解决我问题的代码是什么?

2 个答案:

答案 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 mvman 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