Saya sudah mencoba
rm -- -
rm "-"
rm "\-"
rm \-
Memberi Perl kesempatan
~$ perl -e '$junk = glob("-"); chomp $junk; print "$junk\n"; `rm $junk`;'
-
rm: cannot remove `-': No such file or directory
...dan...
~$ perl -e '$junk = glob("-"); chomp $junk; print "$junk\n"; `mv $junk newfile.garbage`;'
-
mv: cannot stat `-': No such file or directory
Bantuan apa pun akan sangat dihargai, orang bijak.
rm
Versi apa yang Anda gunakan (rm --version
)?rm -
berfungsi dengan baik dengan GNU coreutils 8.5.rm ./-
Jawaban:
Ini digunakan untuk diposting di FAQ Usenet untuk Unix — Saya melihatnya di FAQ Utilitas Inti GNU . Setidaknya ada lima metode yang berbeda, tetapi ini bekerja dengan baik:
Jika nama file berisi karakter yang tidak dapat di ketik, maka gunakan:
The
-i
bendera meminta konfirmasi untuk setiap file jika harus dihapus atau tidak.sumber
Menghapus file yang namanya dimulai dengan
-
FAQ, tetapi sepertinya Anda memiliki masalah yang berbeda.Solusi yang Anda sebutkan dalam pertanyaan:
Itu seharusnya bekerja.
Itu tidak berbeda dari
rm -
. Kutipan dilucuti oleh shell, danrm
perintah hanya melihat tanda hubung tunggal sebagai argumen. Tanda kutip berguna untuk keluar dari karakter meta shell; tanda hubung khusus untukrm
, bukan untuk shell.Tanda kutip lolos dari garis miring terbalik, jadi ini mencoba untuk menghapus file yang namanya terdiri dari dua karakter, garis miring terbalik dan tanda hubung.
Ini seperti
rm "-"
, setara denganrm -
.Seperti yang terjadi, setidaknya dengan versi GNU coreutils
rm
,rm -
sebenarnya menghapus (atau upaya untuk menghapus) file yang namanya hanya terdiri dari tanda hubung. Jika file Anda memiliki nama itu, itu akan hilang sekarang. Saya menyimpulkan bahwa file Anda memiliki nama yang hanya terlihat seperti tanda hubung.harus memberi gambaran tentang apa sebutannya.
Ini skrip Perl yang baru saja saya letakkan bersama yang akan meminta Anda untuk setiap file di direktori saat ini dan bertanya apakah akan menghapusnya. Ditawarkan tanpa garansi, tapi saya sudah mengujinya secara singkat.
EDIT : Solusi yang tidak terlalu rumit: jika nama file hanya satu karakter, maka
rm ?
harus menghapusnya (bersama dengan file lain yang sejenis).sumber
M-bM-^@M-^S
adalah rendition dari representasi 3-byte UTF-8 dari karakter Unicode "EN DASH", 0x2013. Saya ingin tahu apakah Anda secara tidak sengaja menyalin dan menempelnya dari halaman web.rm -i *
tidak bekerja? Sepertinya itu akan melakukan hal yang sama dengan skrip perl./^y/i
suka daripada/y/i
. Lagi pula, pengguna Rusia mungkin mengetik "Nyet".Jika Anda menginginkan sesuatu yang lebih aman ...
Coba gunakan kombinasi ls dan temukan (ini berfungsi untuk semua file yang Anda miliki izin untuk menghapus)
Parameter '-i' akan memberi Anda nomor inode untuk setiap entri direktori ls -li
Setelah Anda memiliki nomor inode ...
sumber
-exec rm -i {}
adalah-i
untuk meminta penghapusan. Saya melihatman find
dan tidak melihat cara untuk melakukan itu.Berikan
rm ./-
mencoba.Ini
-
adalah bendera untuk memulai argumen bendera. Jika Anda memulai argumen dengan apa pun kecuali a-
, dalam hal ini/
, itu akan menganggap itu adalah nama file. Itu yang kamu inginkan.Dan karena
file
dan./file
merupakan file yang sama, itu akan menargetkan file bernama-
via./-
.sumber
Bukan sebagai culun seperti kebanyakan jawaban lain, tapi saya akan menjalankan contoh
mc
, komandan tengah malam, dan hanya memilih dan menghapus file.sumber
Mencoba:
untuk melihat apakah nama file memiliki karakter yang tidak patut dicetak.
sumber
Bukan berarti harus menggunakan perl di sini, tetapi ini harus bekerja:
atau untuk melihat apa kesalahan apa pun di atas:
sumber
Saya beruntung menggunakan Nautilus GNOME untuk menghapus file-file dengan nama buruk. Apakah Anda menjalankan X-server? Saya yakin browser file lain juga akan berfungsi.
sumber
Jika
tidak berfungsi, nama file bukan "hanya tanda hubung". Jika tidak ada file lain yang memiliki tanda hubung di dalamnya, Anda dapat mencoba
sumber
Sejauh ini saya mendapatkan "Tidak ada file atau direktori" untuk setiap metode yang diposting sejauh ini:
Tampaknya saya punya rm versi 7.4. Saya akan mencoba memutakhirkan dan mencoba kembali saran ini. Terima kasih semuanya telah membantu.
sumber
Saya sangat suka menggunakan
dired
mode di emacs untuk hal semacam ini - cukup "buka" direktori di emacs. Anda dapat dengan mudah memilih file dan menandainya untuk dihapus.Poster lain menyarankan menggunakan komandan tengah malam; ini ide yang hampir sama, tetapi jika Anda sudah menjadi pengguna emacs mungkin lebih nyaman.
sumber
Seharusnya bisa
rm -f '-'
bekerja untuk saya di cygwinUntuk hal itu,
rm -
tampaknya juga bekerja pada topi merah.sumber
rm -
bekerja untuk saya juga.