「\」というファイルまたはディレクトリを削除するにはどうすればよいですか?


20

Ubuntuマシンでターミナルを使用していますが、削除したいファイルがあります。ファイルの名前は\(単なるバックスラッシュです)。

今は普通

rm filename

しかし、rm \そうすると、複数行のコマンドを作成しようとしていると考えられます。

このファイルを削除するにはどうすればよいですか?GUIファイルシステムだけを使用できることは知っていますが、それはあまり効率的ではありません。

だから、どのように(ターミナルで)というファイルを削除できます\か?


1
なぜそれという名前のファイルがあるのですか?(codeこのコメントのブロックに入れることさえできません!)
AJMansfield

7
もっとおもしろいのは、<BEL>というファイルを削除しようとすることです。毎回あなたが行うLSます()を発見するまで、あなたにキーボードのビープ音を目に見えないファイルを、(b)名前に印刷できない文字が1つしかないファイルを削除する方法を決定しました。
ピーターギアケンズ

1
さらに重要なことは、「/」という名前のファイルをどのように削除するのですか?
カート

1
@Curt fsck。真剣に。という名前のファイルが/存在する場合、ファイルシステムが破損しています。
zwol

2
私は常に*自分自身という名前のファイルが好きだった...
RBerteig

回答:


48

使用しますrm \\(バックスラッシュを別のバックスラッシュでエスケープします)。これはまた、指定されたディレクトリのために、と似て動作することに注意してください\(いずれかを使用してrmdir、またはrm-rフラグ)。

例:

> mkdirデモ
> cdデモ
> \\をタッチ
> ls -l
合計0
-rw ------- 1 hennesユーザー0 Jul 29 20:25 \
> rm \\
> ls -l
合計0

3
または、同じ原則の下でrm '\'(ただしではありません rm "\")。
evilsoup

2
@evilsoupは、そのことをさらに明確に\ するために、二重引用符で区切られた文字列でエスケープ文字として使用されます。rm "\"2番目の引用符がエスケープ文字とともに使用されるため、言うことは閉じられていない文字列に解析されます(したがって、文字列の終わりではなく、二重引用符文字として解析されます)。したがって、端末は、文字列をanotherで終了するまで待機します"。ここで二重引用符を使用する同等の方法rm "\\"は(既に確認したように、rm '\'との両方に直接相当しrm \\ ます)になります。
ブレークスルー

15

名前に厄介な文字が含まれるファイルを手動で削除する一般的な方法は次のとおりです。

rm -i ./*

これにより、ディレクトリ内の各ファイルを削除するかどうかを選択するよう求められます。


3
または、単一の単一の文字でした。rm -i ./?
ヘネス

1
うん。./*よりも具体的なglobを作成できる場合、特に破壊的な操作を行う場合は、常に良い考えです。
-zwol

4
globの前に+1./
evilsoup

12

ファイルのiノードを参照することでリンクを解除することもできます

linus ~/test $ touch \\
linus ~/test $ ls -li
total 0
15204561 -rw-r--r-- 1 pat sudo 0 Jul 29 23:03 \
linus ~/test $ find . -inum 15204561 -exec rm -v {} \;
removed `./\\'
linus ~/test $ ls -li
total 0
linus ~/test $ 

0

最初にファイルのiノードを確認してください。ls -li

137791 -rw-rw-r--。1 svr svr 366 3月11日15:57

「\」のiノードは「137791」であり、findコマンドを使用してiノード番号の「\」を削除します。

見つける。-inum 137791 -exec rm -i {} \;

rm:通常のファイル `./ \ 'を削除しますか?はい

「\」は削除されます。

弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.