顶部文件夹(1)是根文件夹。
顶部文件夹(1)只包含顶部(2)文件夹。
顶部文件夹(2)包含顶级文件夹(3)、(4)、(5)、(6)、(7)、(8)、(9)、(10)
顶部文件夹(3)到(10)所有包含文件夹和文件。
我要做的是将顶层文件夹(3)移动到(10)上一级,这样父文件夹就是顶层文件夹(1)。然后使用相同的命令移除现在为空的Top文件夹(2)
Bottum文件夹(1)显示所需的文件夹结构,包括已删除的文件夹。
奖励:我有一个根文件夹,其中包含数百个这些文件夹。因此,如果我在那个根文件夹中,我会看到Top文件夹(1)和许多其他文件夹。我的理想解决方案将是能够想出一个bash行或脚本,将遍历到每个文件夹,并改变文件夹结构如下所示。
(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/发布于 2019-03-29 07:41:40
您有一个bash标记,下面是一个使用bash数组的解决方案:
for book in *; do topdir=($book/*); chapters=("${topdir[0]}"/*); mv "${chapters[@]}" "$book"; rmdir "${topdir[0]}"; done您需要从您提到的根文件夹中运行此操作,以便“book”变量解析为每本书的名称。
此解决方案以这种方式工作。对于每本书,使用数组变量“topdir”读取顶部目录名。然后,获取顶层目录下的章节目录列表。然后,将章节目录列表传递给mv,以便将其向上移动一层。一旦完成,使用rmdir删除现在为空的顶层目录。rmdir将拒绝删除不为空的目录,因此它是某种程度上的安全网。
下面是一个演示,显示在运行命令之前和之后的目录结构(我在这个系统上没有tree命令,因此find的输出):
在此之前:
$ 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之后:
$ 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 Fileshttps://unix.stackexchange.com/questions/509349
复制相似问题