Hapus semua file yang dimulai dengan tanda tanya

23

Saya memiliki folder di mana saya memiliki sekitar 4k file. Beberapa file ini dimulai dengan aa ?atau !karakter. Saya perlu menghapusnya tetapi tidak dapat menemukan ekspresi yang akan melakukannya:

rm -f ./?*

hapus saja semuanya. Saya mungkin dapat menggunakan grepls dan pipa melalui xargsdan memindahkan file ke folder lain tapi saya berharap ada cara yang tepat untuk melakukan ini. Perlu bantuan pada file ?dan !.

reklamasi
sumber

Jawaban:

26

Tidak perlu barang-barang mewah. Cukup lepas dari ?sehingga tidak dianggap sebagai bagian dari bola dunia:

rm -f ./\?*

Ini juga berfungsi !:

rm -f ./\!*

Atau dalam satu gerakan:

rm -f ./{\?,\!}*

Memperbarui

Hanya memperhatikan bahwa Anda menyarankan ke grepoutput ls. Saya ingin membawa perhatian Anda pada fakta bahwa Anda tidak harus mem-parsing keluaran ls

Joseph R.
sumber
4
@ recluze Tidak bodoh; itu jauh dari jelas bagaimana melakukannya jika Anda tidak tahu tentang wildcard melarikan diri.
CVn
@recluze Masih merasa bodoh setelah 5 suara atas pertanyaan Anda? :) Ngomong-ngomong, lihat jawaban yang diperbarui.
Joseph R.
Terima kasih dan terima kasih :) ... Sadar akan masalah dalam output ls tetapi file saya memiliki pola tertentu yang dapat saya andalkan. Namun demikian, baik untuk diketahui :)
tutup
13

Dalam kasus saya, karakternya bukan tanda tanya, tetapi karakter unicode yang tampaknya tidak dapat ditampilkan di konsol saya.

Menggunakan rm -i *bekerja untuk saya. Jika Anda tidak ingin melakukan ini, Anda juga dapat menghapus dengan inode, seperti dijelaskan di http://www.cyberciti.biz/tips/delete-remove-files-with-inode-number.html .

Untuk menemukan inode, gunakan:

ls -il

Lalu lakukan:

find . -inum [inode-number] -exec rm -i {} \;
Jonathan
sumber