Unix магія, видалити всі .pyc файли з дерева каталогів?


11

Чи є швидкий спосіб видалення всіх файлів .pyc з дерева каталогів?

Відповіді:


28

Якщо у вас є GNU, значить, ви, мабуть, хочете

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

Якщо вам потрібно щось портативне, тоді вам краще

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

Якщо швидкість велика угода , і у вас є GNU знахідку і GNU xargs потім

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

Це навряд чи дасть вам велику швидкість, однак через те, що ви в основному будете чекати на введення-виведення.


ідеально ... дякую. Я завжди забуваю xargs
interstar

2
На всякий випадок, якщо у мене є файли з пробілами в іменах, я звик завжди використовувати -print0 та "xargs -0".
Пол Томблін

Ви абсолютно праві, повинні були подумати про це спочатку. Відредаговано так, щоб це відобразити.
Cian

4
Ви також можете безпосередньо використовувати '-delete' замість '-print0 | xargs -0 rm '. Але це правда, що ця опція присутня не у всіх версіях "знайти".
rolaf

6

за допомогою команди find:

find /path/to/start -name '*.pyc' -exec rm -f {} \;

Це занадто повільно. Використання xargs швидше, або якщо ваша версія пошуку підтримує його, змініть " \;" в кінці на " +".
Призупинено до подальшого повідомлення.

1
Це може бути трохи повільніше - він запускає "rm" один раз для кожного файлу, а не їх пакетну передачу - але це самий портативний спосіб зробити це. ОП не сказала, який саме тип Unix він використовує, а пошук Solaris досі не має функції -print0.
Кенстер

1
+1, ОП сказав, що Unix не Linux, це найкраще портативне рішення.
theoterreceive

Я думаю, що це рішення є єдиним дозволом на видалення тонни файлів, якщо я не помиляюся, використовуючи xargs, можна залишити в командному рядку занадто довгу помилку. +1, це мій вибір ще й роками.
drAlberT

Якщо ви використовуєте makefile для створення свого проекту, можливо, ви захочете додати це до цільового "чистого".
Том Ньютон,

Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.