删除保留所有内容的父文件夹

Rak*_*kib 5 linux filesystems rm

我想删除我的父目录但保留其所有内容。目前我的目录结构

$ /usermanagement/usermanagement/file1
Run Code Online (Sandbox Code Playgroud)

删除我的父目录后,我想看到如下结构

$ /usermanagement/file1
Run Code Online (Sandbox Code Playgroud)

Sté*_*las 7

(假设您要删除的目录是当前工作目录)

zsh

cd -P . &&
  mv -- *(D) .. &&
  cd -P .. &&
  rmdir ~-
Run Code Online (Sandbox Code Playgroud)

bash

cd -P . &&
  (shopt -s dotglob && mv -- * ..) &&
  cd -P .. &&
  rmdir "$OLDPWD"
Run Code Online (Sandbox Code Playgroud)

cd -P .确保存储在的当前工作目录$PWD是无符号链接的。我们想将所有文件和目录移动到父目录中,包括隐藏的文件和目录(因此(D)全局标记和dotglob选项)。

如果成功,我们将当前目录向上更改一级并删除我们以前的目录。

(您可能希望添加一个-i选项,mv以便有机会取消会覆盖文件的移动)


ari*_*rif 1

可能是我没有正确理解你的问题。但我从你的问题中得到的答案是,

假设您位于当前目录,其名称为nested,父目录名称为test

$ cp -Rp . ../;cd ../;rm -rf nested

解释


  1. cp -Rp . ../- 这将复制所有文件,包括目录、嵌套目录和隐藏文件。在哪里,

    • -R标志用于“递归复制目录”

    • -p是“保留指定的属性(默认:模式、所有权、时间戳),如果可能的话附加属性:上下文、链接、xattr、全部”,

    • .用于指示当前目录作为源

    • ..指示父目录作为目标。

  2. cd ../- 这会将您从当前目录移动到父目录

  3. rm -rf nested- 这将删除所有文件,包括目录、嵌套目录和隐藏文件。

来源:手册页