lisenok425
@lisenok425
Начинающий Ардуинщик.

Bash script для сортировки файлов в папки по дате создания?

Доброго всем дня!
Собрал для себя файловую помойку на xigmanas и встал вопрос нужен скрипт который из папки 1 будет сортировать фотографии в папку 2 по дате создания, раньше пользовался ФТП провайдера и там работал этот скрипт:
#/bin/bash 

SRC_DIR="/1"
DST_DIR="/2"

for F in ${SRC_DIR}/*; do
    SUB=$(date -d"$(stat -c%y "${F}")" +%Y%m%d:%H)
    mkdir -p "${DST_DIR}/${SUB}"
    mv "${F}" "${DST_DIR}/${SUB}/"
done

Но на новом сервере он тупо переносит файлы в папку 2 без сортировки. Сам не силен в этом деле, буду присильно благодарен за помощь.
  • Вопрос задан
  • 2375 просмотров
Решения вопроса 2
saboteur_kiev
@saboteur_kiev Куратор тега bash
software engineer
Так а на новый сервер вы все файлы недавно перенесли, и соответственно дата создания у всех файлов сейчас одинаковая?
FreeBSD использует другую версию stat, не все ключи совпадают с тем, что в большинстве Linux.

Возможно вам нужно просто заменить это
SUB=$(date -d"$(stat -c%y "${F}")" +%Y%m%d:%H)
на это
SUB=$(stat -f %Sm -t %Y%m%d-%H "${F}")

freebsd под рукой нет, не на чем проверить
Ответ написан
sgjurano
@sgjurano
Разработчик
Вот так попробуйте, у вас там похоже слетело распознавание даты из-за изменения версий date и/или stat, я переделал на timestamp.

SUB=$(date -d"@$(stat -c%Y "${F}")" +%Y%m%d:%H)

Если не сработает - скиньте вывод вот такой команды:
F="/tmp/test.txt"; touch $F && stat -c%Y $F && unlink $F;


UPD: выяснилось, что у автора FreeBSD, там другие coreutils, поэтому итоговая команда вот такая:
SUB=$(date -j -f"%s" "$(stat -f %m $F)" +%Y%m%d:%H)


Вот источники информации, если кому интересно:
man stat
man date
date reformat
timezone
Ответ написан
Пригласить эксперта
Ваш ответ на вопрос

Войдите, чтобы написать ответ

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