「>」という名前のファイルを削除するにはどうすればよいですか?


22

私は、誤動作し、sudoという名前のファイルを作成するために使用するPythonスクリプトを実行していました>

このファイルを削除するにはどうすればよいですか?

もちろん、私がしようとするとsudo rm >、エラーが発生しますbash: syntax error near unexpected token 'newline'。これは、の出力をリダイレクトしようとしていると思われるためですrm

その許可は-rw-r--r--です。


10
もちろん、答えは正しいですが、一般的にこれを検討するかもしれません:最初にファイルがどのように作成されたのですか?(もちろん、sudo touch >シェルでも同じエラーが発生します。)あなたは、おそらく">"何らかのos関数に渡すことによって作成されたPythonスクリプトを使用すると述べました。だからsudo python <<< 'import os; os.remove(">")'うまく動作するはずです。
wchargin

4
これは、特定の名前のファイルを文字通り削除できなかったWindowsの1つのバグを思い出させました(ただし、問題なく作成できました。)
PyRulez

PyRulez ooh、どれ?
オースティンバーク

8
皮肉なことに、答えはあなたが自分で書いたタイトルにあります。
ラファエル

回答:


54

これらのいずれかが動作するはずです:

sudo rm \>
sudo rm '>'
sudo rm ">"
sudo find . -name '>' -delete
sudo find . -name '>' -exec rm {} +

を使用する最後の2つのコマンドは、現在のフォルダーとそのすべてのサブフォルダーで指定されたすべてのファイルまたはディレクトリfindを検索することに注意してください。それを回避するには、GNU findを使用します。>

sudo find . -maxdepth 1 -name '>' -delete
sudo find . -maxdepth 1 -name '>' -exec rm {} +

2
再帰的であり、現在のディレクトリツリーの下にあるすべてのファイルがどれだけ深く削除されても削除さfindないrmため、おそらく注意が必要です。rm
jw013

6
@rahul最初の3つ(rmバリアント)はすべて同じです。そのファイル名をシェルから保護する方法は3つだけです。実際に別のものよりも好む理由はありません。
デロベルト

7
なぜ提案するのfind(1)ですか?ここでの唯一の問題は、シェルのメタキャラクターを引用する必要があることです。ファイルを削除できる数百万のプログラムがありますが、それ以外のものを使用rm(1)すると答えがわかりにくくなります。
カム

2
再帰を避けるためにGNU findは必要ありません。sudo find . ! -name . -prune -name '>' -exec rm {} +
hvd

2
私は@camhに同意しfind、質問に答えても何も追加しません。
ポールドレイパー

18

Pythonを使用して削除することもできます。

python -c 'import os;os.remove(">")'

POSIXの場合find

find . ! -name . -prune -type f -name '>' -exec rm -f {} +

3
なぜわざわざ?シェルは>、出力リダイレクトとして解釈されるのを避けるための多くの方法を提供します。
アレクシス

3
@alexis imoこれらの単純なタスクをできるだけ多くの方法で達成することをお勧めします。opがシェルで純粋に解決することがより困難です。このような別の問題がある場合、彼らはそれをして試してみるために彼らのツールボックスで別のツールを持っています
undergroundmonorail

1

最初にやったことも機能します:

sudo sh -c "rm \>"

もちろん、これはsimplerの変形sudo rm \>です。


0

これをコメントとして試してみましたが、すべてが1行で出力されました

[Harry@localhost]~% touch ">"
[Harry@localhost]~% cat > ">"
line 1
line 2
[Harry@localhost]~% cat ">"
line 1
line 2
[Harry@localhost]~% ls -l ">"
-rw-r--r-- 1 Harry Harry 14 Jun  5 12:04 >
[Harry@localhost]~% rm ">"
[Harry@localhost]~% ls -l ">"
ls: cannot access >: No such file or directory
[Harry@localhost]~% 

これは...しかし、terdonの答えに既にある
ジョン・WHスミス

はい、それは腱の答えで部分的に与えられています、私は同意します、私はこのシーケンスが単純であり、それを明示的にしたと思いました。ご覧のとおり、私はそれを回答ではなくコメントとして含めようとしましたが、すべてを1行で表示しないようにする方法がわかりません。また、ファイルを作成するためにPythonを必要としないことも示しています。これは、他のコメントでも提案されています。
ハリーウェストン

0

シェルがリダイレクトとして解釈しないように、文字を引用符で囲みます。

sudo rm '>'

ただし、奇妙な文字を含む他のファイルがある場合、最も安全な方法は、GUIファイルエクスプローラーを開き、nautilusそこで削除することです。

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