このようなもの、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ます。
これをシェル スクリプト ファイルに入れ$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実行sh flatten fooしてディレクトリをフラット化できますfoo。または、chmod +x flatten実行します./flatten foo。最終的に、何度も使用する場合は、私たちのディレクトリに移動してPATH、flatten foo. 私が持っているのは、binLinuxのホームディレクトリにあるファイルで、ログイン時に必要なツールを配置~/binし、自分のPATH(bashプロファイルに設定)に配置します。