Cara menghapus file yang dimulai dengan ">" atau karakter tidak biasa lainnya [ditutup]

8

Saya tidak sengaja membuat file bernama

> option[value='2016']

Bagaimana saya bisa menghapusnya?

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

Daftar file:

HAPPY_PLUS_OPTIONS/
o*
op*
> option[value='2016']
> option[value='ALFA ROMEO']
README.md
rspec_conversions/
.rubocop.yml
SAD/
SAD_PLUS_OPTIONS/
Michael Durrant
sumber
Sudahkah Anda mencoba menggunakan kartu liar? rm * option *
RageAgainstTheMachine
Pertanyaan berikut terlihat konyol, tetapi apakah Anda mencoba manajer file GUI?
Incnis Mrsi

Jawaban:

16

pilihan lain

ls -i 

yang memberi (dengan nilai inode yang tepat)

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

kemudian

find . -inum 5233 -delete

optionnaly (untuk melihat dulu)

find . -inum 5233 -print

Anda juga dapat menambahkan -xdevjika ada sistem file lain di bawahnya.

Archemar
sumber
9

Anda juga dapat menggunakan opsi "-" yang menurut manusia:

 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

Jadi saya mencoba:

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

Dan menghapusnya dengan:

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

Cara termudah untuk memeriksa apakah nama file dimasukkan dengan benar:

rm -- ">[tab]

Dan biarkan pelengkapan otomatis melakukan pekerjaan.

PS: Sedemikian kedengarannya menggoda, jangan buat nama file "-rf *". Hal-hal buruk dapat terjadi.

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

Selalu gunakan "-i" agar aman.

iMac:~ stephan$ rm -i -- "-rf *"
remove -rf *? Y
Stephan Burlot
sumber
Sejauh ini jawaban terbaik, sejauh ini.
8

Masalah awal adalah ruang terdepan, dengan demikian

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

bekerja.

Memperbarui pertanyaan tentang file yang dimulai dengan> dll.

Michael Durrant
sumber
3

Untuk pendekatan interaktif (seringkali lebih aman):

Jika ada beberapa file bernama khusus dalam direktori saat ini.

Anda dapat menggunakan rm ./dan kemudian TabTabuntuk membuat daftar file dan kemudian Anda dapat memilih file dan menghapusnya.

Shellmode
sumber
Masukkan Tabdua kali untuk menemukan file.
Shellmode
1

Sebab rm, tidak ada yang ajaib tentang itu >. Anda hanya perlu memastikan braket sudut sampai ke sana (= mencegah shell menafsirkannya sebagai pengalihan).

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

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

Jika Anda menggunakan sistem modern yang masuk akal, Anda harus bisa mendapatkan nama yang benar-benar lolos dengan penyelesaian tab.

PSkocik
sumber