">"または他の珍しい文字で始まるファイルを削除する方法

">"または他の珍しい文字で始まるファイルを削除する方法

誤ってというファイルを作成しました。

> option[value='2016']

どうすれば削除できますか?

My attempts:

$ rm "> option[value='2016']"
rm: cannot remove ‘> option[value='2016']’: No such file or directory
$ rm \> o*
rm: cannot remove ‘>’: No such file or directory
rm: cannot remove ‘o*’: No such file or directory
$ rm `> o*`                                                                               
rm: missing operand
Try 'rm --help' for more information.
$ rm \> option*
rm: cannot remove ‘>’: No such file or directory
rm: cannot remove ‘option*’: No such file or directory
$ rm '\> option*'                                                                         
rm: cannot remove ‘\\> option*’: No such file or directory
$
$ rm "\> option*"                                                                         
rm: cannot remove ‘\\> option*’: No such file or directory

文書リスト:

HAPPY_PLUS_OPTIONS/
o*
op*
> option[value='2016']
> option[value='ALFA ROMEO']
README.md
rspec_conversions/
.rubocop.yml
SAD/
SAD_PLUS_OPTIONS/

答え1

その他のオプション

ls -i 

与えられた(適切なinode値で)

5233 > option[value='2016']   5689 foo

それから

find . -inum 5233 -delete

オプション(プレビュー)

find . -inum 5233 -print

-xdev以下に別のファイルシステムがある場合は、追加することもできます。

答え2

manによると、「--」オプションを使用することもできます。

 The rm command uses getopt(3) to parse its arguments, which allows it to
 accept the `--' option which will cause it to stop processing flag options at
 that point.  This will allow the removal of file names that begin with a dash
 (`-').  For example:
       rm -- -filename

だから私は次のことを試みます:

touch -- "> option[value='2016']"

削除してください。

rm -- "> option[value='2016']"

ファイル名が正しく入力されていることを確認する最も簡単な方法:

rm -- ">[tab]

そして、オートコンプリート機能がこれを行うようにしてください。

PS:聞こえるように「-rf *」というファイル名を作成しないでください。悪いことが起こる可能性があります。

-rw-r--r--    1 stephan  staff      0 Sep 13 14:11 -rf *

安全を保つためには必ず「-i」を使用してください。

iMac:~ stephan$ rm -i -- "-rf *"
remove -rf *? Y

答え3

もともと問題は先行空白だったので

rm " > option[value='2016']"
    ^ here

働く

>などで始まるファイルに関する質問が更新されました。

答え4

rmそこには魔法のようなものが全くないからです>。山かっこがここに到達していることを確認するだけです(=シェルがそれをリダイレクトとして解釈するのを防ぎます)。

> "> option[value='2016']"  #create it
rm "> option[value='2016']" #remove it

#remove all files in the current directory that have > in them
rm -- {,.}*\>*                 

合理的な最新システムを使用している場合は、タブの完成によって適切にエスケープされた名前を取得できるはずです。

関連情報