我想知道是否可以将我的工作目录中的所有子目录及其内容移动到工作目录中,以便子目录成为树中的主目录。
例如:
我在workingdir
,里面我们有folder1
,folder2
,folder3
,等
现在文件夹1,2,和3已经在工作目录内的主要目录,但是当我们到folder4
那里是中具有相同名称的子目录folder4
,然后内容,这样下去folder5
,folder6
到folder100andsomething
。
我想是运行一个命令移动子目录folder4
一路folder100andsomething
它们的内容出来的父目录一起,进入工作目录,所以最后我会folder1
-folder100andsomething
作为主目录和一堆错误的空父母。要清理,我可以运行命令以删除所有空的父目录。
与find
和rename
:
$ find . -mindepth 3 | rename -n 's:([^/]+)/\1:$1:'
./folder10/folder10/blah10 -> ./folder10/blah10
./folder9/folder9/blah9 -> ./folder9/blah9
./folder8/folder8/blah8 -> ./folder8/blah8
./folder7/folder7/blah7 -> ./folder7/blah7
./folder6/folder6/blah6 -> ./folder6/blah6
./folder5/folder5/blah5 -> ./folder5/blah5
./folder4/folder4/blah4 -> ./folder4/blah4
正则表达式([^/]+)/\1
匹配重复的文本,并且/
中间有一个(so folder4/folder4
,等)。替换只是重复的部分(所以只是folder4
)。
该-n
选项仅显示将要进行的更改。如果更改看起来确定,请在没有更改的情况下运行以实际执行更改。
本文收集自互联网,转载请注明来源。
如有侵权,请联系 [email protected] 删除。
我来说两句