我想删除我的父目录但保留其所有内容。目前我的目录结构
$ /usermanagement/usermanagement/file1
删除我的父目录后,我想看到如下结构
$ /usermanagement/file1
答案1
(假设要删除的目录是当前工作目录)
和zsh
:
cd -P . &&
mv -- *(D) .. &&
cd -P .. &&
rmdir ~-
和bash
:
cd -P . &&
(shopt -s dotglob && mv -- * ..) &&
cd -P .. &&
rmdir "$OLDPWD"
cd -P .
确保存储的当前工作目录$PWD
没有符号链接。我们希望将所有文件和目录移动到父级中,包括隐藏的文件和目录(因此(D)
有通配标记和dotglob
选项)。
如果有效,我们将当前目录向上一级更改并删除以前的目录。
(您可能需要添加一个-i
选项,以便mv
有机会取消会覆盖文件的移动)
答案2
可能是我没有正确理解你的问题。但我从你的问题中得到的答案是,
假设您位于当前目录,其名称为
nested
,父目录名称为test
。
$ cp -Rp . ../;cd ../;rm -rf nested
解释
cp -Rp . ../
- 这将复制所有文件,包括目录、嵌套目录和隐藏文件。在哪里,-R
标志用于“递归复制目录”-p
是“保留指定的属性(默认:模式、所有权、时间戳),如果可能的话附加属性:上下文、链接、xattr、全部”,.
用于指示当前目录作为源..
指示父目录作为目标。
cd ../
- 这会将您从当前目录移动到父目录rm -rf nested
- 这将删除所有文件,包括目录、嵌套目录和隐藏文件。
来源:手册页
答案3
比上面的解决方案更简单的是:
mv /usermanagement/usermanagement /usermanagement.tmp
rmdir /usermanagement
mv /usermanagement.tmp /usermanagement
usermanagement
即以临时名称将下层目录移动到根目录,删除(现在为空)上层usermanagement
目录,最后将/usermanagement.tmp
目录重命名为/usermanagement
.
答案4
可能是最简单的解决方案:
$ mv /usermanagement/usermanagement/* /usermanagement/ && rmdir /usermanagement/usermanagement