Ошибка при выполнении команды оболочки с использованием обратной кавычки в ruby

Я выполняю команду, чтобы рекурсивно узнать количество файлов в папке. Есть и другие процессы, которые продолжают помещать файлы в эту папку.

Пример команды:

ls -1 -rt /dump > /segmentizer.out  2> /segmentizer.err

Иногда возвращается ошибка ( ArgumentError ), и программа просто зависает в этот момент. Вот ошибка

negative string size (or size too big)
/usr/lib/ruby/gems/1.8/gems/activesupport-2.3.17/lib/active_support/core_ext/kernel/agnostics.rb:7:in ``'

Спасибо, Анантрам.


person ananthram    schedule 31.08.2014    source источник
comment
ls предназначен для удобочитаемого вывода. find предназначен для рекурсивного поиска каталога и выполнения действий с файлами. Я подозреваю, что вам вообще не нужен Ruby (если вы создадите правильную команду find), но если вы настаиваете на ее использовании, есть find stdlib, чтобы легко делать такие вещи.   -  person Max    schedule 01.09.2014


Ответы (1)


Можете ли вы привести пример вариантов использования, которые вы пытаетесь решить? Если вы просто хотите узнать количество файлов в каталоге и подкаталогах, вы можете использовать что-то вроде:

Dir["/dump/**/*"].size
person phiggy    schedule 31.08.2014