我有一个文件夹,
app, which is supposed to have
importand
export`,如下所示:
$ tree
app
├── export
│ ├── some-unique-filename
│ ├── another-unique-filename
│ └── ...
└── import
├── some-unique-filename
├── another-unique-filename
└── ...
但是,由于 rsync 脚本错误(现已更正),我们最终导致
app
文件夹被复制到自身中,可能复制了数百次!
所以现在我们有这个:
$ tree
app
├── app
│ ├── app
│ │ └── ... etc.
│ ├── export
│ │ └── another-unique-filename
│ └── import
│ └── another-unique-filename
├── export
│ └── some-unique-filename
└── import
└── some-unique-filename
如何修复当前的嵌套文件夹结构
像这样的脚本应该从根本上做到这一点:
mkdir -p new/export
mkdir -p new/import
mv app/**/export/* new/export
mv app/**/import/* new/import
双星匹配零个或多个目录和子目录。,为您处理递归源文件。
如果如您所说,有数百个文件夹可能会出错,在这种情况下,替代方法是使用
find
和 exec
代替:
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/ \;
这会在顶级
app
文件夹下递归查找文件,并将它们移动到新建/导入(使用 $PWD
获取绝对路径)。
一旦您对结果感到满意 - 清理现在为空的文件夹:
rm -rf app
mv new app