Unix magic, hapus semua file .pyc dari pohon direktori?

11

Apakah ada cara cepat untuk menghapus semua file .pyc dari pohon direktori?

interstar
sumber

Jawaban:

28

Jika Anda mendapatkan GNU, maka Anda mungkin menginginkannya

find <directory name> -name '*.pyc' -delete

Jika Anda membutuhkan sesuatu yang portabel maka Anda lebih baik

find <directory name> -name '*.pyc' -exec rm {} \;

Jika kecepatan adalah masalah besar dan Anda punya GNU find dan GNU xargs

find <directory name> -name '*.pyc' -print0|xargs -0 -p <some number greater than 1> rm

Ini tidak mungkin memberi Anda kecepatan yang lebih tinggi, karena Anda sebagian besar akan menunggu di I / O.

Cian
sumber
sempurna ... terima kasih. Ini adalah xargs yang selalu saya lupakan
interstar
2
Kalau-kalau saya punya file dengan spasi di namanya, saya sudah terbiasa menggunakan -print0 dan "xargs -0".
Paul Tomblin
Anda sepenuhnya benar, seharusnya memikirkan hal itu semula., Diedit untuk mencerminkan hal itu.
Cian
4
Anda juga dapat langsung menggunakan '-delete' alih-alih '-print0 | xargs -0 rm '. Tapi itu benar bahwa opsi ini tidak ada di semua versi 'temukan'.
rolaf
6

menggunakan perintah find:

find /path/to/start -name '*.pyc' -exec rm -f {} \;
Slubman
sumber
Itu terlalu lambat. Menggunakan xarg lebih cepat, atau jika versi pencarian Anda mendukungnya, ubah " \;" di akhir menjadi " +".
Dijeda sampai pemberitahuan lebih lanjut.
1
Ini mungkin sedikit lebih lambat - ia menjalankan "rm" sekali untuk setiap file alih-alih menumpuknya - tetapi ini adalah cara yang paling portabel untuk melakukannya. OP tidak mengatakan jenis unix apa yang dia gunakan, dan Solaris masih belum memiliki fitur -print0.
Kenster
1
+1, OP mengatakan unix bukan linux, ini adalah solusi portabel terbaik.
theotherreceive
Saya pikir solusi ini adalah satu-satunya yang memungkinkan untuk menghapus banyak file, jika saya tidak salah menggunakan xargs dapat meninggalkan kesalahan pada baris perintah terlalu lama. +1, itu juga pilihan saya sejak bertahun-tahun.
drAlberT
Jika Anda menggunakan makefile untuk membangun proyek Anda, Anda mungkin ingin menambahkan ini ke target "clean".
Tom Newton
1

cd ke awal pohon direktori kemudian:

Temukan . -nama '* .pyc' | xargs rm -f

Garry Harthill
sumber
Tidak perlu cd, cukup letakkan direktori teratas di findperintah (sebagai ganti "dot").
Dijeda sampai pemberitahuan lebih lanjut.
Ini tidak menangani spasi sama sekali.
Cian