日本語 —
nulcleanerの公式日本語版。
nulcleaner - Windows NUL File Cleanup (日本語)
問題点
Windows 上の Git Bash で /dev/null をコマンドに使用した場合(例:> /dev/null)、出力が破棄されず、現在のディレクトリに nul という名前の実際のファイル が作成されます。Windows では "NUL" がデバイス名として予約されているため、これらのファイルは通常の方法では削除できません。
本ツールは拡張 UNC パス(\\?\)を利用して、このような NUL ファイルを検索および削除します。
モード
| モード | 説明 |
|---|---|
scan |
ディレクトリ内の NUL ファイルを再帰的にスキャン |
delete |
NUL ファイルを検索して削除 |
gui |
ファイル選択機能付きのグラフィカルインターフェース |
CLI の使い方
# スキャンのみ(発見された NUL ファイルを表示) (日本語)
python nulcleaner.py scan /path/to/directory
# スキャンして削除 (日本語)
python nulcleaner.py delete /path/to/directory
# GUI モードを起動 (日本語)
python nulcleaner.py gui
ヘッドレス API(統合用)
本ツールはヘッドレス運用向けの Python API も提供しています:
from nulcleaner import clean_nul_files_headless
result = clean_nul_files_headless("/path/to/directory", verbose=True)
print(f"Found: {result['found']}, Deleted: {result['deleted']}")
返り値: {'found': int, 'deleted': int, 'errors': list}
技術的詳細
- 拡張 UNC パス(
\\?\)を使用して Windows 予約済みファイル名を削除 os.walk()による再帰的スキャン- tkinter による GUI(外部依存関係なし)
- Windows 上でのみ動作(問題が発生する環境)
予防策
Git Bash での /dev/null の使用は避けるのがベストです。代わりに以下を検討してください:
- 単に出力を省略する
- stderr のリダイレクトには
2>&1を使用する - シェルスクリプトにおける Windows 互換性に注意する