我有一个目录,里面有几千个子目录(但是这些子目录中没有子目录),我只需要展平一些子目录的内容,所以基本上将这些目录的内容带到根目录。
但是我不能对所有子目录都这样做,而我无法展平的子目录中有多个文件。
有什么办法可以自动做到这一点?Python 脚本、perl 脚本、bash 或其他什么?我真的,真的,真的不想手动做这个……
我有一个目录,里面有几千个子目录(但是这些子目录中没有子目录),我只需要展平一些子目录的内容,所以基本上将这些目录的内容带到根目录。
但是我不能对所有子目录都这样做,而我无法展平的子目录中有多个文件。
有什么办法可以自动做到这一点?Python 脚本、perl 脚本、bash 或其他什么?我真的,真的,真的不想手动做这个……
像这样的东西,在bash
(foo
代表你要展平的目录):
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
您可以将其放入名为flatten
then run的文件中sh flatten foo
以展平目录foo
。或者,chmod +x flatten
运行./flatten foo
. 最后,如果您随着时间的推移经常使用它,您可以将它移动到我们的目录中,PATH
这样您就可以输入flatten foo
. 我在 Linux 的主目录中拥有一个bin
文件,我在其中放置了我登录时想要的自己的工具,并将我的工具放入我~/bin
的PATH
(在bash
配置文件中设置)。