Миллионы (маленьких) текстовых файлов в папке

Нет. Если вы вызовете make хотя бы один раз в Makefile , это будет называться рекурсивным make. В GNU Make нет простого способа предотвратить это.

Прочитав статью, упомянутую в вашем сообщении, вы сможете понять, как вы пишете Makefile s, является ли make рекурсивным или нерекурсивным.

Система сборки ядра Linux будет одним из самых известных приложений традиционной рекурсивной сборки в больших масштабах. Система сборки Android является хорошим примером нерекурсивной программы make, которая явно решает проблемы рекурсивной программы make. Обе системы сборки интенсивно используют специфические особенности GNU Make.

15
15.12.2017, 18:16
1 ответ

Во-первых, :предотвратите сортировку 'ls' с помощью 'ls -U', возможно, обновите ваш ~/bashrc, чтобы он имел 'alias ls="ls -U"' или аналогичный.

Для большого набора файлов вы можете попробовать это следующим образом:

  • создать набор тестовых файлов

  • проверьте, не вызывают ли проблемы многие имена файлов

  • используйте параметр xargs -пакетную обработку и поведение zip (по умолчанию )для добавления файлов в zip, чтобы избежать проблем.

Это сработало хорошо:

# create ~ 100k files
seq 1 99999 | sed "s/\(.*\)/a_somewhat_long_filename_as_a_prefix_to_exercise_zip_parameter_processing_\1.txt/" | xargs touch
# see if zip can handle such a list of names
zip -q /tmp/bar.zip./*
    bash: /usr/bin/zip: Argument list too long
# use xargs to batch sets of filenames to zip
find. -type f | xargs zip -q /tmp/foo.zip
l /tmp/foo.zip
    28692 -rw-r--r-- 1 jmullee jmullee 29377592 2017-12-16 20:12 /tmp/foo.zip
2
27.01.2020, 19:49

Теги

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