Как я могу прочитать информацию о каталоге или файле, используя Ruby / Rails или, возможно, PHP? - PullRequest
1 голос
/ 25 июня 2010

Мне нужно обработать некоторые файлы, используя attachment_fu, но не все файлы.

Я видел несколько сообщений о чтении и перечислении файлов в каталоге с использованием Ruby, но кто-нибудь знает, как выбрать файлы на основе даты загрузки или параметров файла?

Я могу использовать либо параметры даты, когда файл был загружен, либо посмотреть размер изображений jpg (100 x 100), и если они не были должным образом изменены, мне нужно изменить их размер.

Любые идеи о том, как получить доступ к любой из этих частей информации, чтобы я мог передать их сценарию, который будет обрабатывать файлы с использованием attachment_fu?

СПАСИБО! Синди

Ответы [ 2 ]

2 голосов
/ 25 июня 2010

В PHP вы можете использовать SPL DirectoryIterator или FilesystemIterator.Итераторы расширяются от SplFileInfo, что обеспечивает удобный API для атрибутов файла.

Пример:

$it = new FilesystemIterator('/some/directory');
foreach ($it as $fileinfo) {
    echo $fileinfo->getFilename() . "\n";
    echo $fileinfo->getCTime() . "\n";
    // etc ...
}

Если вам нужно пройти глубже в каталог, вы можете сделать это с помощью RecursiveDirectoryIterator.Есть ряд вопросов о том, как это сделать.Просто обыщите SO.

1 голос
/ 25 июня 2010

Следующий скрипт рекурсивно найдет все файлы с именем * .jpg в текущем каталоге, возраст которых более 3 дней, и напечатает имя файла в командной строке.

#!/usr/bin/env ruby

require 'rubygems'
require 'active_support'

AGE=3.days
PATTERN="*.jpg"

from_time = Time.now - AGE

jpgfiles = File.join("**", PATTERN)
Dir.glob(jpgfiles) do |file|
  puts file if File.mtime(file) < from_time
end

Вы можете использовать это вкомандная строка * nix выглядит следующим образом:

some_command_that_takes_a_filelist $(path_to_ruby_script)

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

...