Как удалить все файлы .pyc из проекта?

В зависимости от того, как реализована функция uuid (), это очень плохая практика программирования - если вы попытаетесь сделать это с включенным двоичным протоколированием (т. е. в кластере), то вставка скорее всего не сработает ]. По мнению Иванова, это может решить ближайшую проблему, однако я думал, что это возвращает только значение, генерируемое для поля с автоматическим приращением. Действительно, это , что в руководстве сказано .

Также, что извлечь выгоду из использования uuid ()? Его вычислительно дорогая генерация, требует большого объема памяти, увеличивает стоимость запроса данных и не криптографически защищена. Вместо этого используйте генератор последовательности или автоинкремент.

Независимо от того, используете ли вы генератор последовательности или uuid, если вы должны использовать это как единственный уникальный ключ в базе данных, вам нужно сначала присвоить значение, прочитать его обратно в phpland и вставить / свяжите значение как литерал с последующим вставным запросом.

639
задан Lightness Races in Orbit 2 April 2016 в 02:28
поделиться

8 ответов

find . -name "*.pyc" -exec rm -f {} \;
1124
ответ дан 22 November 2019 в 21:47
поделиться

rm -r повторяется в каталогах, но только каталоги, которые вы предоставляете rm . Это также удалит эти каталоги. Одно из решений:

for i in $( find . -name *.pyc )
do
  rm $i
done

find найдет все файлы * .pyc рекурсивно в текущем каталоге, а цикл для будет перебирать список найденных файлов, удаляя каждый из них.

2
ответ дан 22 November 2019 в 21:47
поделиться
find . -name '*.pyc' -print0 | xargs -0 rm

Поиск рекурсивно ищет файлы * .pyc. Xargs берет этот список имен и отправляет его в rm. -Print0 и -0 говорят двум командам разделять имена файлов нулевыми символами. Это позволяет ему корректно работать с именами файлов, содержащими пробелы, и даже с именами файлов, содержащими новую строку.

Решение с -exec работает, но оно раскручивает новую копию rm для каждого файла. В медленной системе или с большим количеством файлов это займет слишком много времени.

Вы также можете добавить еще пару аргументов:

find . -iname '*.pyc' -print0 | xargs -0 --no-run-if-empty  rm

iname добавляет нечувствительность к регистру, например * .PYC. No-run-if-empty не позволяет получить сообщение об ошибке от rm, если у вас нет таких файлов.

18
ответ дан 22 November 2019 в 21:47
поделиться

Я использовал для этого псевдоним:

$ which pycclean

pycclean is aliased to `find . -name "*.pyc" | xargs -I {} rm -v "{}"'
30
ответ дан 22 November 2019 в 21:47
поделиться

Если вы используете bash> = 4.0 (или zsh)

rm **/*.pyc

Обратите внимание, что * / *. Pyc выбирает все файлы .pyc в непосредственных подкаталогах первого уровня, в то время как ** / *. pyc рекурсивно сканирует все дерево каталогов. Например, foo / bar / qux.pyc будет удален rm ** / *. Pyc , но не * / *. Pyc .

Должны быть включены параметры оболочки globstar. Чтобы включить globstar :

shopt -s globstar

и проверить его состояние:

shopt globstar
53
ответ дан 22 November 2019 в 21:47
поделиться

Если Вы хотите удалить все .pyc файлы из папки проекта.

Первый, Вы имеете

cd <path/to/the/folder>

, затем находят весь .pyc файл и удаляют.

find . -name \*.pyc -delete
0
ответ дан 22 November 2019 в 21:47
поделиться

Чтобы добавить еще один вариант, вы также можете использовать обратные кавычки, например:

rm `find . -name *.pyc`
8
ответ дан 22 November 2019 в 21:47
поделиться

find. -name '* .pyc' -delete

Несомненно, самый простой.

992
ответ дан 22 November 2019 в 21:47
поделиться
Другие вопросы по тегам:

Похожие вопросы: