1

У меня есть куча файлов с такими именами, как MOV001.mpg, MOV002.mpg и т.д. Все они имеют разную дату и время.

Как я могу переименовать их, чтобы они превратились в 2012 08 05 13 45 33 MOV001.mpg, 2012 09 02 23 45 07 MOV002.mpg и т.д.?

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

Большое спасибо заранее.

2 ответа2

1

Исходный вопрос указывает, что результирующие файлы также заканчиваются расширением файла. Чтобы сделать это в переносимом виде, в bash возьмите расширение из /path/to/file.ext со встроенным ${f##*.} , В результате чего получится:

for f in *.FOO; do mv "$f" "$( /usr/bin/stat -f "%Sm" -t "%Y%m%d_%H%M%S" ).${f##*.}" ; done

и блок кода

for f in *.FOO ; do
    mv "$f" "$( /usr/bin/stat -f "%Sm" -t "%Y%m%d_%H%M%S" ).${f##*.}"
done

поэтому, когда вы изменяете FOO (например, с * .mpg на * .png), имена выходных файлов являются нормальными.

1

Непроверенные:

for f in *.mpg; do
  mv "$f" "$(stat -f "%m" -t "%Y %m %d %H %M %S" "$f") $f"
done

stat -f "%m" должен выводить дату последнего изменения файла, -t "%Y %m %d %H %M %S" должен форматировать дату в соответствии с вашими требованиями.

Всё ещё ищете ответ? Посмотрите другие вопросы с метками .