Menghapus file di Linux dengan loop menggunakan `rm`

0

Saya punya file seperti file.log.1.gz, file.log.2.gz, ... file.log.100.gz. Saya ingin memiliki satu lingkaran dari 1 untuk 100 untuk menghapus file-file ini. Bagaimana ini bisa dilakukan?

Saya mencoba perintah ini di Linux:

for i in $(seq 1 100); do rm -rf file.log.$i.gz
Asa
sumber
Apa yang terjadi ketika Anda mencoba perintah itu?
David Z
Haruskah saya menyalin perintah itu, tempel ke terminal dan jalankan .... hmm ... berpikir .... tidak, terima kasih, rm adalah perintah iblis: pastikan Anda yakin apa yang akan dilakukan ...
Solar Mike
Mengapa tidak menghapus folder yang menyimpan file-file itu lalu menggantinya? Berhasil memperlakukan untuk menghapus 180000 file di beberapa folder di masa lalu ....
Solar Mike
Karena saya memerlukan folder itu, saya punya 50+ file di sana yang saya butuhkan, jadi saya tidak bisa menghapusnya. Perintah yang saya gunakan adalah dalam bash dan tidak melakukan apa-apa, meskipun saya tahu bahwa: untuk saya dalam $ (seq 1 100), adalah loop dalam bash
Asa
Sementara solusi seq Anda akan melakukan ini, jika itu untuk pemeliharaan file log, dan Anda ingin menyingkirkan log lama Anda dapat menjalankan sesuatu seperti 'find / path / to / dir -type f-waktu + XXX -exec rm {} + `di mana XXX adalah jumlah hari yang ingin Anda pertahankan. Anda mungkin ingin mengganti rm dengan echo pada putaran pertama untuk mengecek apa yang Anda inginkan. Anda dapat menambahkan file ini untuk berjalan secara berkala di cron untuk secara otomatis melakukan ini.
davidgo

Jawaban:

2

Anda done hilang.

for i in $(seq 1 100); do rm -f file.log.$i.gz; done

Saya dihapus -r karena rekursi tidak berguna ketika argumennya adalah file.


Sintaks tanpa loop ini juga harus berfungsi bash. Ini memberi makan semua nama ke satu rm:

rm file.log.{1..100}.gz
Kamil Maciorowski
sumber