古いバージョンのUnixでは、rm
コマンドはディレクトリが空の場合にディレクトリを削除しました。rmのResearch Unix Eighth Editionのマニュアルページから:「エントリがディレクトリの場合、空の場合のみ削除されます。」私はこの動作が好きなので、このエイリアスを自分の中に持ってい/etc/profile
ます。alias rm='rm -d'
私はGNU coreutilsバージョンのを使用しています。このバージョンではrm
、ディレクトリが空の場合は先に進み、ディレクトリを削除するように-d
指示rm
しています。
ここまでは順調ですね。このエイリアスによりrm
、昔と同じように使用できます。しかし、私はそれをさらに一歩進めたいと思います。私は...したいrm
ディレクトリに他のディレクトリが含まれている場合でも、ディレクトリのみが存在する限り、ディレクトリを削除します。ディレクトリ構造がどのくらい深いかは関係ありません。そこにファイルがなく、空になったら(一番下に到達したら)、ディレクトリをrm
すべて削除します。
これは、通常として機能し、rm
渡されたファイルを削除するエイリアスとして記述できますか?
mkdir -p a/b1/c2 && mkdir -p a/b2/c2; rmdir -p a/b1/c1;
ても、a、a / b2、a / b2 / c2が残っています。私が望むのは、トップレベル(この場合はa)だけをに渡し、その下のrm
すべてを削除することです。
rmdir -p
ですか?