ファイル名の最後に半角スペースが入ったファイルの削除

 25, 2015 22:54
コピペミスで見た目上、重複したファイル名が存在するようになってしまいました。

・本来の作業
cp -p 150101-1 150101

・作業資料のコピペした際、ファイル名最後に半角スペースが入っていることに気が付かず、そのままコピペしてエンター
cp -p 150101-1 150101□
(□は半角スペース)

lsコマンドを叩くと、ファイル名最後の半角スペースは表示されない
(判別出来ない)ので、150101のファイルが2つ存在しているように見えます。
#ls
150101
150101□


削除しようにも、"rm 150101□"と入力しても、rmコマンドとしては
"rm 150101"と認識されて、本来残すべきファイルを削除してしまいそうで
怖いので、どうしようかと思って周りに相談。


以下の解決方法を教えてもらいました。


・ファイルのIノード番号の確認と、表示不可能な文字を表示するオプションを組み合わせ

# ls -i | cat -vt
5975710 150101
447269871 150101M-cM-^@M-^@


M-cM-^@M-^@の表記が半角スペースを表すようです。
ファイル名の前に表示されている数字がIノード番号です。



このまま "rm 150101M-cM-^@M-^@" で削除できればいいのですが、
それもできないようなので、一旦リネームをします。


find . -inum 447269871 -ok mv {} 150101rename \;

※447269871はls -iで確認した、Iノード番号。
 150101renameはリネーム後のファイル名


これで150101□が150101renameに書き換わりました。


あとは普通に"rm 150101rename"で削除。

こういうとき、GUIは便利というか手間がないなあと思ったりして。

COMMENT 0


WHAT'S NEW?