Как выполнить пакетное переименование файлов в Mac OS X?

Как выполнить пакетное переименование файлов в Mac OS X?

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

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

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

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

решение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"следует отформатировать дату в соответствии с вашими требованиями.

решение2

В исходном вопросе указано, что полученные файлы также заканчиваются расширением файла. Чтобы сделать это в переносимом виде, в 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) имена выходных файлов будут нормальными.

Связанный контент