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

标签 bash shell unix ksh aix

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

dir/
    subdir1/file1
    subdir2/file2
    subdir3/file3

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

dir/
    file1
    file2
    file3
    ....

我应该使用什么命令?

最佳答案

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

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

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

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

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

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

关于bash - 如何删除所有子目录但将这些文件保留在父目录中?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/43905955/

相关文章:

algorithm - shell脚本排序列表

linux - 删除大小为 0 的文件的最快方法

linux - 在 Shell 脚本中打印前一天和后一天的文件路径

unix - 如何在 unix 中查找忽略大小写的文件名

linux - Bash脚本删除目录中多个文件名结尾的 'x'字符数量?

Bash 间接变量引用

bash - 为什么这个 bash 脚本在比较之前添加一个字母?

bash - 生成包含列表中命名的 shell 变量的 JSON 映射

android - 运行与终端分离的 AVD 模拟器

Bash查找大文件中多个字符串的数量