NUL というファイルを消去する方法を教えて下さい

El Capitanを使用しています。 NULという一文字のファイル(ASCIIコード0ということです)ができてしまって。 それを消去できずに困っています。

おそらく、Classic環境でのアプリケーションファイル内に存在しているファイルだったのだと思うのですが、アプリを消去しているうちに、NULという一文字のファイルが残ってしまい。それを消去できずに困っています。


  1. Finderで位置を動かそうとしても 「予期しないエラーが起きたため、操作を完了できません(エラーコード -50) とでて移動できず。
  2. 名前を変更しようとしても「もっと少ない文字数にするか、句読点記号のない別の名前を使用してください。」とメッセージが出て名前の変更ができず。
  3. terminalで rm -i ~/Desktop/nul 等とやって消去しようとしても rm: ␀: Invalid argument と反応があって、削除できない状態です。


何かいい方法ありませんでしょうか?


きっと再現することも難しいと思うのですが、私の場合、「Anarchie-150」とか「イージーアドレス Ver1.5」とかに含まれていたファイルのようです。

OS X Yosemite (10.10.1)

投稿日 2016/06/01 04:49

返信
返信: 9

2016/06/01 05:09 Shuns_note への返信

rm -i ~/Desktop/*

とするとどうですか?

* だとどんなファイル名にもマッチしますので、大事なファイルには no として消さないようにしないといけませんけど。

rm -i ~/Desktop/?

とすれば、1文字だけのファイル名にマッチしますので、より適切かも。

ターミナルで

ls -l ~/Desktop

とするとそのファイルはどう表示されるのでしょうか?

2016/06/01 05:19 はに への返信

不思議ですよね。 結局、上記を全部ためしてみたのですが、

rm: ␀: Invalid argument 

と反応が帰ってきて、消去できないのですね。


ls -l とすると。 -rwxrwxrwx@ 1 owner staff 0 6 1 20:26 ␀

と帰ってきます。


海外のサイトを見ると、直接inode numberを指定して消去? ちょっと意味不明ですが。 かなり大変な操作が必要そうです。

2016/06/01 05:40 Shuns_note への返信

HFS Plus 名では U+0000 NULL が許容されていますが、POSIX では使えないので、OS X では、VFS (仮想ファイルシステム)において U+0000 を U+2400 ␀ SYMBOL FOR NULL に置換しています。


この U+2400 を含むファイル名は、OS X 10.10.x までは Terminal で削除できたのですが、OS X 10.11 以降では正常に扱えなくなっています。XNU の深くにあるバグだと思われます。


現状での対処方法は、


1)問題のファイルのあるマシンを、OS X 10.10 又はそれ以前の OS X で起動して、そこからファイルを削除する、又は、


2)問題のファイルのあるマシンを、OS X 10.10 又はそれ以前の OS X で起動しているマシンに Target Disk Mode で接続して、そこからファイルを削除する、又は、


3)問題のファイルのあるボリュームを初期化する。


です。



cf.

Cannot delete/rename/move a file from Windows with a special character

https://discussions.apple.com/thread/7409456

2016/06/01 05:44 Shuns_note への返信

> rm: ␀: Invalid argument 


ファイル名がnul だからでしょうか(普通の文字ではない)。

一旦ファイル名を変えないと上手く行かないのかも。

Desktopから無関係なファイルは全部別の場所(フォルダー)に退避してデスクトップから別のところに置いて、デスクトップには問題のファイル以外はないようにしてから、

find ~/Desktop -d 1 -exec rename {} xxx \;

としたら、nul のファイル名から xxx に変えられませんか?

やる前に、

find ~/Desktop -d 1 -exec echo {} \;

として、問題のファイルだけがリストされることを確認してから行う方が良いかも。

上手く変えることができたら、

rm -f xxx

としたら消えないかな。

2016/06/01 16:14 chandana への返信

なるほど、10.10のUSB起動ディスクで動作させて、消去してみますか・・。 一度チャレンジしてまた報告してみます。

10.11以降でないと起動できないマックしか使っておられない方は、確かに、こんな妙なファイル持っておられませんしね。問題に上がらないのでしょうね。

10.10でダメなら10.8ぐらいまで落として一度やってみます。 海外の報告だと10.6.8で削除可能と報告が上がっていました。 

2016/06/01 16:16 はに への返信

名前変えられないんですよね・・。


2.名前を変更しようとしても「もっと少ない文字数にするか、句読点記号のない別の名前を使用してください。」とメッセージが出て名前の変更ができず。

とっても理不尽な感じです。 と言うかデスクトップに移動すると、ゴミ箱からファイルがコピーされて、更に状況が悪化しましたね・・。😁

2016/06/01 17:50 Shuns_note への返信

NULはゼロを意味する予約語で、多分、ファイルの実体は存在しない。

それがあるように見えるということはファイル作成のミスなんで、ファイルシステムに介入しない限り消せないと思う。

ディスク修復で直らないなら、ごっそり入れ替えるのが早いと思うけど。

2016/06/02 08:21 Shuns_note への返信

皆さんありがとうございます。

sudo find . -inum nulのiノード番号 -exec rm {} ¥;  も気になりますが、その後fsckでrepairする必要があるかもしれず。興味はありますが、Yosemiteで起動することで回復したので試していません。 ごめんなさい。


こんな状態に陥るかた少ないと思いますが、後々の方のために記載しておきます。

  1. http://c-through.blogto.jp/archives/41437338.html などを参照にYosemite USB起動ディスクを作成する。
  2. USBなのでシステム終了して電源が切れてしまうと、USBを認識しませんので、一度El capitanで起動した状態で、USBを認識させ、再起動させ直後にoptionを押しながら起動を待機する。
  3. 起動ディスクを選択で、Yosemiteの起動ディスクを選択する。
  4. OSインストール画面が出てくるので、メニューバーからTerminalを起動させる。
  5. この後は目的の場所までcd で移動して、その場所で rm -i * として、NULファイルが表示されたらyesコマンドを打ち込むと消去できました。
  6. 将来的にEl capitanでもできるようになってくれるとありがたいですが、もともとこのようなファイルを持っている方は、古いMac user(?)かと思いますので、yosemite以前の起動ができるmacをお持ちなのではないかなと思われます。

このスレッドはシステム、またはAppleコミュニティチームによってロックされました。 問題解決の参考になる情報であれば、どの投稿にでも投票いただけます。またコミュニティで他の回答を検索することもできます。

NUL というファイルを消去する方法を教えて下さい

Apple サポートコミュニティへようこそ
Apple ユーザ同士でお使いの製品について助け合うフォーラムです。Apple Account を使ってご参加ください。