Sesuatu yang saya rasa harus saya ketahui dengan pasti: jika saya ls <something>
, akan rm <something>
menghapus file yang sama persis yang ls
ditampilkan? Apakah ada keadaan di mana rm
dapat menghapus file yang ls
tidak muncul? (Ini dalam bash 18,04)
Sunting: terima kasih kepada semua orang yang menjawab. Saya pikir jawaban lengkap adalah kombinasi dari semua jawaban, jadi saya telah menerima jawaban yang paling banyak dipilih sebagai "jawaban".
Hal-hal tak terduga yang saya pelajari selama ini:
ls
tidak semudah yang Anda kira dalam penanganan argumennya- Dalam instalasi sederhana un-fiddled-with Ubuntu, .bashrc alias
ls
- Jangan beri nama file Anda dimulai dengan tanda hubung karena dapat terlihat seperti argumen perintah, dan penamaan satu -r memintanya!
find -delete
lebih baik daripada rm
? Anda mengatakan "Itu sebabnya" , tetapi sama sekali tidak jelas bagi saya apa yang dimaksud. Juga perhatikan bahwa find
permohonan Anda akan menghapus semua file secara rekursif di direktori saat ini, di mana rm
hanya akan menghapus file di direktori langsung. Juga -name *
adalah no-op. Secara keseluruhan, saya cukup bingung dengan saran Anda ...
find
ini adalah karena Anda dapat menjalankannya, melihat semua file, dan kemudian menjalankan perintah yang sama dengannya -delete
. Karena Anda sudah melihat hasil dari find
, seharusnya tidak ada ambiguitas dengan apa yang akan dihapus (saya sebenarnya ingin mendengar rincian lebih lanjut tentang ini dalam bentuk jawaban)
-delete
" - Tapi bagaimana itu lebih baik daripada menjalankan ls <filespec>
, diikuti oleh rm <filespec>
(yang OP sudah tahu bagaimana melakukannya)?
find ... -print
pertama untuk mengonfirmasi file apa yang akan dihapus, dan kemudian find ... -delete
, Anda masih akan menghapus file yang dibuat di antara kedua perintah. Jika Anda menggunakan keduanya -print
dan -delete
, Anda tidak mendapatkan konfirmasi, hanya laporan setelah fakta tentang apa yang telah dihapus (dan Anda mungkin juga menggunakannya rm -v
).
rm
tidak memiliki--dry-run
bendera ...