名前が1文字のように見える厄介な小さなファイルがあり、その文字は\r
です。
どうすればこれを削除できますか?
これは私がls -bl
で得たものです:
-rw-rwxr--+ 1 root snapplewriters 0 Aug 29 2011 \r
ls -l
「?」と表示するだけ
我ら ls -li
ファイルのiノード番号(最初の列)を取得し、find
を使用してファイルを削除します(iノードが12345であると想定)。
find . -inum 12345 -exec rm -i {} \;
aNSI-C引用符を使用します:rm $'\r'
http://www.gnu.org/software/bash/manual/bashref.html#ANSI_002dC-引用
私は個人的にPythonに手を伸ばします:
>>> import os
>>> '\r' in os.listdir('.')
True
>>> os.unlink('\r')
ただし、エスケープ文字を理解している場合は、シェルからこれを行うこともできます。
$ ls -b $'\r'
\r
$ rm -vi $'\r'
rm: remove regular empty file ‘\r’? y
removed ‘\r’
Bashシェルを使用している場合に<carriage return>
というファイルを削除するもう1つの簡単な方法は次のとおりです。
$ rm <control-v><control-m>
1文字のファイル名は珍しいものであり、ディレクトリにそのようなファイルが他にない場合は、次のことを試すことができます。
rm ?
奇妙な文字を引用する方法を学んだり調べたりするのが面倒なので、難しい名前のファイルで立ち往生しているときに、これの変形を何度も使用しました。