【问题标题】:How to delete all the subdirectories but keep those files in the parent directory?如何删除所有子目录但将这些文件保留在父目录中?
【发布时间】:2017-10-09 21:32:58
【问题描述】:

我在 AIX 上使用 ksh,我的目录结构如下。

dir/
    subdir1/file1
    subdir2/file2
    subdir3/file3

我想删除subdir1、subdir2等所有子目录。我想将文件file1、file2 等保存在dir 中。换句话说,我想将subdirs中的所有文件移动到dir,然后删除所有空的subdirs。所以最终的结果是:

dir/
    file1
    file2
    file3
    ....

我应该使用什么命令?

【问题讨论】:

    标签: bash shell unix ksh aix


    【解决方案1】:

    先上移文件,再删除空子目录;来自dir/:

    mv subdir*/file* ./ && rmdir subdir*/
    

    目录名后面的/表示我们正在处理一个目录。不过,您可以通过使用? 或[:digit:] 匹配文件/目录名称来更精确地进行通配。

    【讨论】:

    • 可能是 rmdir 会比 rm -r 更好,因为 OP 打算只删除空目录。所以,mv subdir*/file* ./ && rmdir subdir*/.
    • @codeforester 是的,没有仔细阅读......这是有道理的,已编辑。谢谢。
    【解决方案2】:

    我只使用find 命令,它应该可以在任何 shell 中工作:

    find ./dir -mindepth 2 -type f -exec mv {} ./dir/ \;
    

    这从./dir 开始,查找./dir 一级以下的文件,然后将这些文件移动到./dir。

    要删除空子目录,请使用:

    find ./dir -mindepth 1 -type d -empty -delete
    

    警告:如果存在文件名冲突,这将覆盖同名文件。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2023-03-04
      • 1970-01-01
      • 2013-01-07
      • 1970-01-01
      • 2017-07-24
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多