将所有子目录内容上移一级

将所有子目录内容上移一级

我的顶级目录包含一堆子目录:

  • af
  • ar
  • ca
  • cs
  • da
  • de
  • el
  • en
  • ...(还有更多)

每个目录都具有完全相同的结构。它们包含两个目录:

  • v2.3.0
  • v3.0.0

我需要将所有文件从*/v2.3.0/*.php目录中移动,所以我们从:

  • af
    • v2.3.0
      • file1.php
      • file2.php
    • v3.0.0

对此:

  • af
    • file1.php
    • file2.php

答案1

最简单的解决方案是:

for dir in *; do mv "$dir"/v2.3.0/* "$dir"/; done

仅移动php文件使用:

for dir in *; do mv "$dir"/v2.3.0/*php "$dir"/; done

如果顶层有文件(不仅仅是目录),为了避免出现错误消息:

for dir in *; do [ -d "$dir" ] && mv "$dir"/v2.3.0/* "$dir"/; done

相关内容