.png)
Я ищу утилиту, которая пакетно/массово изменяет метки дат файлов (дату изменения и/или дату создания) с точностью до секунды, но делает это в порядке возрастания, например
File1 2012-04-18 10:21:01
File2 2012-04-18 10:21:02
File3 2012-04-18 10:21:03
Я хочу это сделать, потому что хочу заставить Flickr упорядочивать загружаемые фотографии в определенной последовательности.
Я бы хотел это для Windows или Mac. У меня также есть Ubuntu, поэтому я мог бы рассмотреть это как второстепенный вариант.
решение1
Этот
- работает в Linux/Mac,
- не использует искусственных задержек для создания временного разброса, и
- сохраняет дату изменения близкой к исходной (я часто нахожу эти даты удобными в других контекстах).
#!/bin/sh
REF=${1}
i=1
while [ $# -gt 1 ]; do
if ! [ "${2}" = "${REF}" ]; then
touch -h -r "${REF}" -d "+${i} seconds" "${2}"
i=$((i+1))
fi
shift
done
Просто укажите файлыв разыскиваемом временном порядкеи он будет использовать временную метку первого файла в качестве основы и постепенно добавлять одну секунду к каждому из следующих аргументов.
Если файл ссылки указан несколько раз, он сохранит свое исходное время (это необходимо только для того, чтобы можно было сделать, например, "retime 0001.jpg *" без изменения временной метки ссылки). Если другой файл указан несколько раз, он получит последнюю логическую временную метку.
Без него -h
будут touch
разыменовываться символические ссылки, что в данном случае, скорее всего, нежелательно (если вы спросите «символические что-теперь?», то не волнуйтесь).
решение2
Хороший вопрос, хотя, возможно, Flickr должен иметь возможность упорядочивать загружаемые файлы.
Для Windows я бы посоветовал
Nirsoft Массовый чейнджер файлов
Для Linux можно легко написать bash-скрипт и использоватьтрогатькоманда для изменения нескольких файлов.
Команда touch также доступна в Mac OS X, кто-то написалзадача автоматизациисделать это, но опять же это можно сделать на терминале
FILES=./*
for f in $FILES
do
echo "Processing $f file..."
touch $f
done
Этот скрипт bash коснется каждого файла в порядке возрастания. Вы можете добавить "sleep" к скрипту, если хотите, чтобы каждый файл имел разное второе значение.
user@computer:/tmp/data$ ls -l
total 9028
-rw-r--r-- 1 user user 428800 Apr 19 12:18 File1
-rw-r--r-- 1 user user 4338800 Apr 19 12:18 File2
-rw-r--r-- 1 user user 4438800 Apr 19 12:18 File3
-rwxrwxrwx 1 user user 78 Apr 19 12:18 fix.sh
решение3
«изменяет ли Nirsoft Bulk File Changer отметку даты файлов в определенном порядке по возрастанию».
Ответ ДА. Я сделал это с пакетом файлов. Это можно сделать.
Выберите список файлов в Total Commander или Windows Explorer и расположите их в нужном вам порядке.
Нажмите и перетащите в Nirsoft Bulk File Changer
Настройте дату и время первого файла. Например: Дата изменения [/] 07-Apr-5 [/] 11:40:10 AM
[/] Добавить [1] [Минуты]
Нажмите [/] Режим последовательности даты/времени
НЕ НАЖИМАЙТЕ на [] Время указано по Гринвичу
Нажмите [Сделать это]
Все мухи в списке изменяются с помощью отметки даты и времени с последовательностью изменений в 1 минуту. Первый файл добавлен 1 минута, второй файл добавлен 2 минуты, третий файл добавлен 3 минуты и так далее...