如何递归移动嵌套文件夹/文件

问题描述 投票:0回答:1

我有一个文件夹

app
,里面有
import
export

然而,由于一段时间没有人注意到的糟糕脚本,

app
被一遍又一遍地复制到
app
,也许有数百次!

所以:

app/
   app/
      app/
      import/
      export/
   import/
   export/

每个

app
文件夹本身都是重复的。

我想修复此问题并将其恢复为:

app/
   import/
   export/

所以我需要进入每个应用程序文件夹并将其中的

import
export
文件夹移动到根应用程序级别。

希望这是有道理的。

说实话,不知道如何处理它,所以任何帮助都会很棒!谢谢

我本来是在

app
上做mv的,因为我以为它只复制了一次,但它在很多时候令人恶心并且抛出了错误

linux rsync mv
1个回答
0
投票

像这样的脚本应该从根本上做到这一点:

mkdir -p new/export
mkdir -p new/import

mv app/**/export/* new/export
mv app/**/import/* new/import

处理深度嵌套的文件夹

如果如您所说,有数百个文件夹可能会出错,在这种情况下,替代方法是使用

find
代替:

mkdir -p new/export
mkdir -p new/import

find app -type f -path '*/export/*' -exec mv {} $PWD/new/export/ \;
find app -type f -path '*/import/*' -exec mv {} $PWD/new/import/ \;

清洁

一旦您对结果感到满意 - 清理现在为空的文件夹:

rm -rf app
mv new app
© www.soinside.com 2019 - 2024. All rights reserved.