如何删除所有子目录,但将这些文件保存在父目录中?

时间:2017-05-11 03:18:37

标签: bash shell unix ksh aix

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

dir/
    subdir1/file1
    subdir2/file2
    subdir3/file3

我想删除所有子目录subdir1subdir2,依此类推。我想在file1中保留file2dir等文件。换句话说,我想将subdirs中的所有文件移动到dir,然后删除所有空subdirs。所以最终结果将是:

dir/
    file1
    file2
    file3
    ....

我应该使用什么命令?

2 个答案:

答案 0 :(得分:3)

我只使用适用于任何shell的find命令:

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

./dir开始,找到第一级./dir以下的文件,然后将这些文件移至./dir

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

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

警告:如果存在文件名冲突,这将覆盖具有相同名称的文件。

答案 1 :(得分:2)

首先上移文件,然后删除空的子目录;来自dir/

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

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