ファイル名として\ rを使用してファイルを削除または名前変更します


10

名前が単一の文字のように見える厄介な小さなファイルがあり、その文字は \r

これを削除するにはどうすればよいですか?

これは私が得るものですls -bl

-rw-rwxr--+   1 root             snapplewriters        0 Aug 29  2011 \r

ls -l 「?」と表示するだけです


どうしてそのような名前のファイルになったのですか?
mkaito

回答:


16

私たちはls -li、その後、ファイル(最初の列)のiノード番号を取得使用するようにfindそれを削除する(仮定iノードは12345です):

find . -inum 12345 -exec rm -i {} \;


ありがとう-これは非常に便利です-ファイルへの何らかの明確なシステム参照が必要であると感じましたが、それを見つけることができませんでした(とにかく)。
コリン

1
バージョンによってfindインストールされ、あなたも行うことができますfind . -inum 12345 -delete
ウィリアム・ジャクソン

私にとっては、バージョンにとらわれないほど良いです。しかし、それでもなお良い提案です。:)
ギャレット


5

私は個人的に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

私はあなたの台所にもハンマーを持っていると思いますか?ナットを割る必要がある場合に備えて?:
mivk

3

<carriage return>Bashシェルを使用している場合に呼び出されるファイルを削除する別の簡単な方法は次のとおりです。

$ rm <control-v><control-m>

2

単一文字のファイル名は珍しいため、ディレクトリにそのようなファイルが他にない場合は、これを試すことができます。

rm ?

私は奇妙な文字を引用する方法を学んだり調べたりするのが面倒なので、難しい名前のファイルで立ち往生しているときに何度もこの変種を使用しています。


-1これは、単一の文字名を持つすべてのファイルに一致ます-の「パス名の展開」を参照してくださいman bash。試してくださいtouch a b c d $'\r'; rm ?
l0b0

1
@ l0b0:はい?私が書いたように、単一文字のファイル名は珍しいです。ディレクトリにそのようなファイルが他にない可能性がかなり高く、その場合、これは機能します。それ以外の場合は、「rm -i?」に使える。
トーマスパドロンマッカーシー
弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.