0

我有一个目录,里面有几千个子目录(但是这些子目录中没有子目录),我只需要展平一些子目录的内容,所以基本上将这些目录的内容带到根目录。

但是我不能对所有子目录都这样做,而我无法展平的子目录中有多个文件。

有什么办法可以自动做到这一点?Python 脚本、perl 脚本、bash 或其他什么?我真的,真的,真的不想手动做这个……

4

1 回答 1

0

像这样的东西,在bashfoo代表你要展平的目录):

for x in foo/*
do
    COUNT=`ls -1 "$x" | wc -l`

    if ([ -d "$x" ] && (test $COUNT -le 1))
    then
        if test $COUNT -eq 1; then
            mv "$x"/* $1
        fi
        rmdir "$x"
    fi
done

这也将从中删除一个空子目录foo

您也可以将其放入 shell 脚本文件并$1用作目录名称:

# Exit it a directory name isn't given

if [ "$1" = "" ] ; then
    echo "Usage: $0 directory"
    echo "Flattens directory"
    exit
fi

for x in "$1"/*
do
    COUNT=`ls -1 "$x" | wc -l`

    if ([ -d "$x" ] && (test $COUNT -le 1))
    then
        if test $COUNT -eq 1; then
            mv "$x"/* "$1"
        fi
        rmdir "$x"
    fi
done

您可以将其放入名为flattenthen run的文件中sh flatten foo以展平目录foo。或者,chmod +x flatten运行./flatten foo. 最后,如果您随着时间的推移经常使用它,您可以将它移动到我们的目录中,PATH这样您就可以输入flatten foo. 我在 Linux 的主目录中拥有一个bin文件,我在其中放置了我登录时想要的自己的工具,并将我的工具放入我~/binPATH(在bash配置文件中设置)。

于 2013-07-17T11:07:58.593 回答