Сортировать миллионы текстовых файлов в папке, используя сортировку Unix

Заключение в кавычки официальных документов в https://docs.python.org/2.0/ref/strings.html :

Без обиняков: Строковые литералы могут быть включены в соответствие одинарным кавычкам (') или двойные кавычки (").

, Таким образом, нет никакого различия. Вместо этого люди скажут Вам выбирать, какой бы ни разрабатывают, который соответствует контексту, и быть последователен . И я согласился бы - добавляющий, что бессмысленно попытаться придумать "соглашения" для этого вида вещи, потому что Вы только закончите тем, что смутили любых вновь прибывших.

4
задан 16.05.2020, 19:22

1 ответ

Проблема не имеет никакого отношения к затмению или Python. Вы поражаете предел ARG_MAX, поскольку больше деталей видит здесь , но кратко, это - предел того, каким количеством байтов список аргументов команде может быть.

Так, для предотвращения этого Вам нужно к sort способом, который не перечисляет файлы. Например:

for i in /home/viraj/NZ/NZParsed/*; do cat "$i" ; done |
    sort -k1,1 -k3,3n -k4,4n -y 1048576 > /home/viraj/NZ/SplitIndex/abcd.txt

команда выше желания cat каждый файл и затем передают содержание всех файлов через Ваш sort команда. Тем путем файлы никогда не перечисляются, и Вы не будете иметь ARG_MAX проблема.

Другой подход должен был бы использовать находку -exec опция:

find /home/viraj/NZ/NZParsed/ -type f -name '[0-9]*.txt' -exec cat {} + | 
    sort -k1,1 -k3,3n -k4,4n -y 1048576 > /home/viraj/NZ/SplitIndex/abcd.txt
3
ответ дан 16.05.2020, 19:23
  • 1
    @Viraj да, извините, я предположил, что Вы хотели отсортировать все. См. обновленный ответ для более точного find команда. – Balazs F. 16.05.2020, 19:23
  • 2
    @Viraj это работало? – Daniel BC 16.05.2020, 19:24
  • 3
    @Viraj that' s, потому что I' m идиот и имел синтаксическую ошибку. Не должно быть никакого * в find. Попробуйте обновленным ответом. – Christian Bonato 16.05.2020, 19:24
  • 4
    Я получаю ту же ошибку при использовании find' s исполнительная команда. – Scott Fraley 16.05.2020, 19:24
  • 5
    Да. Это, кажется, работает. Никакая ошибка на данный момент. Также для команды находки делают мы должны добавить - тип f, потому что я получаю ошибочную кошку:/home/viraj/NZ/NZParsed/Является каталогом?. Наклон upvote из-за отсутствия репутации, но Спасибо. – Scott Fraley 16.05.2020, 19:25

Теги

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