如何编写 shell 脚本来扁平化目录?

如何编写 shell 脚本来扁平化目录?

我编写了一个简单的脚本来使用该命令从目录中删除无用的文件find

现在我想知道是否可以在脚本中添加行来展平目录,但不能完全地压扁了。

例如,如果我有一个名为的大目录cleantarget

  • 清洁目标
    • 文件夹A
      • 文件夹A1
      • 文件夹A2
    • 文件夹B
      • 文件夹B1
        • 文件夹B11

我希望最终结果是:

  • 清洁目标
    • 文件夹A
    • 文件夹B

我不希望结果是:

  • 清洁目标
    • 我的所有文件

该目录中有 16000 个文件,因此最好使用脚本来执行此操作,这样当目录再次混乱时我可以偶尔运行它。

我该怎么做呢?

编辑:本质上,这意味着:我想要一个脚本,它将分别展平给定目标目录中的每个子目录。即,展平文件夹 A、展平文件夹 B、展平文件夹 C,依此类推,直到cleanfolder展平其中的所有目录。

答案1

这些行应该有效:

find "/path/to/cleantarget" -maxdepth 1 -mindepth 1 -type d | while read line; do
    find "${line}" -mindepth 2 -type f -exec mv -t "${line}" -i '{}' +
    rm -r "${line}"/*/
done

这将展平文件夹 A 和文件夹 B,询问您是否要覆盖重复项,然后删除文件夹。

来源:https://unix.stackexchange.com/a/52816/284212

相关内容