回答:
このコマンドを試してください:
find . -empty -type d -delete
このfindコマンドは、指定されたパス、この場合は現在のディレクトリ(したがって.)から特定の検索条件に一致するファイル/ディレクトリを検索するために使用されます。
この-emptyオプションは、空のすべてのファイルとディレクトリに当てはまります。
この-type dオプションは、指定されたファイルの種類に当てはまります。この場合d、ファイルタイプディレクトリを表します。
この-deleteオプションは実行するアクションであり、検索で見つかったすべてのファイルに当てはまります。
rm -rf <directory-name>。これにより、ファイルとサブディレクトリを含むすべてのコンテンツとともにディレクトリが削除されます。-r一方、オプションは、再帰的に削除を意味-f指令手段は、削除する前にプロンプトを表示しません。ただし、ディレクトリ/ファイルを削除する前にプロンプトを表示する-f場合は、-iオプションをオプションに置き換えます。
stdout1つのコマンド(例find)をstdin他のコマンド(例)にフィードすることでこれを行うことができrmますが、不要なファイル/ディレクトリを消去または削除する可能性があるため、非常に注意してください削除!これを行う方法の詳細についてはman、これらの各コマンドのページを参照してください。安全のために、実際のことを試す前に、一時ディレクトリでそのようなことを常にテストしてください。
rmdir *
すべての空のディレクトリを削除します。空ではないすべてのディレクトリとファイルに対してエラーをスローし、これらのエラーが端末を乱雑にするのを防ぐために、
rmdir * 2> /dev/null
rmdir * 2>/dev/null || true。(スクリプトにはfind(1)の方法が適していますが、その他の理由:やりたいことをよりうまく表現するためです。)
$HOMEます。邪悪な笑顔で。
$ tree
.
├── empty_dir1
├── empty_dir2
├── subdir1
│ ├── file1.abc
│ └── file2.abc
└── subdir2
├── file1.abc
└── file2.abc
4 directories, 4 files
$ python -c 'import os;empty=[r for r,s,f in os.walk(".") if not f and not s and r != "." ];map(lambda x: os.rmdir(x),empty)'
$ tree
.
├── subdir1
│ ├── file1.abc
│ └── file2.abc
└── subdir2
├── file1.abc
└── file2.abc
これは次のように機能します。
os.walk()関数を使用して、ディレクトリツリーを再帰的にウォークします。各反復がでr私たちがアクセスしている現在のフォルダに設定されている、s内のディレクトリのリストが含まrれ、fそのフォルダ内のファイルのリストが含まれます。もちろん、fとsが空の場合、空であることはわかりrます。empty、上記の評価に基づいて、空のすべてのディレクトリのリストを作成できます。map()はos.rmdir()、emptyリスト内の各項目で実行するために使用されます。リストの内包表記も代替として使用できます。スクリプトとして、これは次のようになります。
#!/usr/bin/env python
import os
empty=[]
for r,s,f in os.walk("."):
if not f and not s and r != ".":
empty.append(r)
for i in empty:
os.rmdir(i)
/bin/shだけとPythonは、実際には、これらの2以上のエレガントな言語である