不使用 mv/cp/find/ 将目录内容上移一级

不使用 mv/cp/find/ 将目录内容上移一级

通常,下载并解压压缩文件夹后,最终会得到如下文件夹结构:

.
└── downloaded
    └── downloaded
        ├── a
        ├── b
        ├── c
        └── d

我知道我可以做类似的事情mv downloaded/downloaded/* downloaded && rmdir downloaded/downloaded。但是我记得有一次在学习一个教程时,作者使用了一个命令(我们称之为),xyz将的内容移动downloaded/downloadeddownloaded,然后downloaded/downloaded自动删除,如下所示:xyz downloaded/downloaded

我只是忘记了该命令的名称以及我在哪个教程中找到它。但在我看来它非常有用。

我的问题是:您知道命令名称吗?

我偶然发现了几个问题,人们问如何将文件夹内容上移一级,但没有一个问题的答案包含我正在寻找的特定命令。

答案1

tar --remove-files -cC downloaded{,} | tar -x

(这并不像您的示例那么简单,xyz downloaded/downloaded但请注意downloaded只输入一次。)

解释:

首先downloaded{,}将 展开为bashdownloaded downloaded因此该命令相当于:

tar -c --remove-files -C downloaded downloaded | tar -x

顺序含义:

  • tar -c– 创建档案…
  • --remove-files– …(但添加后会删除文件和目录)…
  • -C downloaded– …工作目录更改为(外部)downloaded
  • downloaded– 将(内部)添加downloaded到档案;
  • |– 然后将档案传输至...
  • tar -x–……另一人tar命令将其提取出来。

相关内容