首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >将子文件夹及其内容向上移动一个级别,并删除空文件夹,跨多个具有自动化的文件夹

将子文件夹及其内容向上移动一个级别,并删除空文件夹,跨多个具有自动化的文件夹
EN

Unix & Linux用户
提问于 2019-03-29 02:18:37
回答 1查看 53关注 0票数 2

顶部文件夹(1)是根文件夹。

顶部文件夹(1)只包含顶部(2)文件夹。

顶部文件夹(2)包含顶级文件夹(3)、(4)、(5)、(6)、(7)、(8)、(9)、(10)

顶部文件夹(3)到(10)所有包含文件夹和文件。

我要做的是将顶层文件夹(3)移动到(10)上一级,这样父文件夹就是顶层文件夹(1)。然后使用相同的命令移除现在为空的Top文件夹(2)

Bottum文件夹(1)显示所需的文件夹结构,包括已删除的文件夹。

奖励:我有一个根文件夹,其中包含数百个这些文件夹。因此,如果我在那个根文件夹中,我会看到Top文件夹(1)和许多其他文件夹。我的理想解决方案将是能够想出一个bash行或脚本,将遍历到每个文件夹,并改变文件夹结构如下所示。

代码语言:javascript
复制
 (1)->Packt.Learn.Javascript.and.HTML5.Canvas.Build.a.Paint.App.for.Drawing/
    (2)->LearnJavascriptandHTML5Canvas-BuildaPaintAppforDrawing[Video]
      (3)->1.Introduction/
      (4)->2.Algorithm of the game app/
      (5)->3.HTML5 Building Blocks of the App/
      (6)->4.Styling the Drawing_Paint app - achieving the final look/
      (7)->5.[OPTIONAL] Javascript Basic Concepts (related to this project)/
      (8)->6.[OPTIONAL]HTML5 Canvas Basic Concepts(related to this project)/
      (9)->7.Javascript code for the app - Making the app work/
     (10)->Exercise Files/

 (1)->Packt.Learn.Javascript.and.HTML5.Canvas.Build.a.Paint.App.for.Drawing/
   (2)->1.Introduction/
   (3)->2.Algorithm of the game app/
   (4)->3.HTML5 Building Blocks of the App/
   (5)->4.Styling the Drawing_Paint app - achieving the final look/
   (6)->5.[OPTIONAL] Javascript Basic Concepts (related to this project)/
   (7)->6.[OPTIONAL] HTML5 Canvas Basic Concepts (related to this project)/
   (8)->7.Javascript code for the app - Making the app work/
   (9)->Exercise Files/
EN

回答 1

Unix & Linux用户

发布于 2019-03-29 07:41:40

您有一个bash标记,下面是一个使用bash数组的解决方案:

代码语言:javascript
复制
for book in *; do topdir=($book/*); chapters=("${topdir[0]}"/*); mv "${chapters[@]}" "$book"; rmdir "${topdir[0]}"; done

您需要从您提到的根文件夹中运行此操作,以便“book”变量解析为每本书的名称。

此解决方案以这种方式工作。对于每本书,使用数组变量“topdir”读取顶部目录名。然后,获取顶层目录下的章节目录列表。然后,将章节目录列表传递给mv,以便将其向上移动一层。一旦完成,使用rmdir删除现在为空的顶层目录。rmdir将拒绝删除不为空的目录,因此它是某种程度上的安全网。

下面是一个演示,显示在运行命令之前和之后的目录结构(我在这个系统上没有tree命令,因此find的输出):

在此之前:

代码语言:javascript
复制
$ find .
.
./Learn.Javascript.and.HTML5
./Learn.Javascript.and.HTML5/LearnJavascriptandHTML5Canvas[Video]
./Learn.Javascript.and.HTML5/LearnJavascriptandHTML5Canvas[Video]/1.Introduction
./Learn.Javascript.and.HTML5/LearnJavascriptandHTML5Canvas[Video]/2.Algorithm of the game app
./Learn.Javascript.and.HTML5/LearnJavascriptandHTML5Canvas[Video]/3.HTML5 Building Blocks of the App
./Learn.Javascript.and.HTML5/LearnJavascriptandHTML5Canvas[Video]/4.Styling the Drawing_Paint app - achieving the final look
./Learn.Javascript.and.HTML5/LearnJavascriptandHTML5Canvas[Video]/5.[OPTIONAL] Javascript Basic Concepts (related to this project)
./Learn.Javascript.and.HTML5/LearnJavascriptandHTML5Canvas[Video]/6.[OPTIONAL]HTML5 Canvas Basic Concepts(related to this project)
./Learn.Javascript.and.HTML5/LearnJavascriptandHTML5Canvas[Video]/7.Javascript code for the app - Making the app work
./Learn.Javascript.and.HTML5/LearnJavascriptandHTML5Canvas[Video]/Exercise Files

之后:

代码语言:javascript
复制
$ find .
.
./Learn.Javascript.and.HTML5
./Learn.Javascript.and.HTML5/1.Introduction
./Learn.Javascript.and.HTML5/2.Algorithm of the game app
./Learn.Javascript.and.HTML5/3.HTML5 Building Blocks of the App
./Learn.Javascript.and.HTML5/4.Styling the Drawing_Paint app - achieving the final look
./Learn.Javascript.and.HTML5/5.[OPTIONAL] Javascript Basic Concepts (related to this project)
./Learn.Javascript.and.HTML5/6.[OPTIONAL]HTML5 Canvas Basic Concepts(related to this project)
./Learn.Javascript.and.HTML5/7.Javascript code for the app - Making the app work
./Learn.Javascript.and.HTML5/Exercise Files
票数 1
EN
页面原文内容由Unix & Linux提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://unix.stackexchange.com/questions/509349

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档