このようなもの、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
. 私が持っているのは、bin
Linuxのホームディレクトリにあるファイルで、ログイン時に必要なツールを配置~/bin
し、自分のPATH
(bash
プロファイルに設定)に配置します。