1

我犯了一个错误并创建了嵌套目录,例如:

dir1/dir2_A/out/dir2_A
    file1
    file2 
    out

dir1/dir2_B/out/dir2_B
    file1
    file2 
    out

dir1/dir2_C/out/dir2_C
    file1
    file2 
    out

...

如何删除所有中间目录:

dir1/dir2_A/out/dir2_A/ → dir1/dir2_A/
dir1/dir2_B/out/dir2_B/ → dir1/dir2_B/
dir1/dir2_C/out/dir2_C/ → dir1/dir2_C/

等等,把这个放进去dir1

dir1/dir2_A
    file1
    file2 
    out

dir1/dir2_B
    file1
    file2 
    out

dir1/dir2_C
    file1
    file2 
    out
4

1 回答 1

0

下降到文件,将所有内容向上移动。
接下来删除空目录。对子shell 使用括号,这样您就可以从 d1 返回而没有cd ../...

for d1 in dir1/*/*/*; do
    test -d "$d1" || continue
    (cd "$d1" && mv * ../.. )
done
# Cleanup without `rm -r` avoiding errors when something went wrong
rmdir dir1/*/out/* 
rmdir dir1/*/out
于 2020-12-22T23:43:54.430 回答