Итак, скажем, у меня есть каталог с кучей файлов, таких как g.txt, где g.txt был последний раз изменен, скажем, 20 июня 2012 года.
Как мне переименовать все файлы (например, g.txt) с последней измененной датой 20 июня 2012 года, добавленной в конце?
date
реализация?date
Кажется, мой GNU не обрабатывает ввод.Вот версия однолинейной версии Goldschrafe, которая:
также справляется с именами файлов, начинающимися с тире
for f in *; do mv -- "$f" "$f-$(date -r "$f" +%Y%m%d)"; done
источник
date -r "$f" +%Y%m%d
или это не будет работать, еслиPOSIXLY_CORRECT
находится в окружающей среде. Как правило, параметры должны идти перед другими аргументами."${f}"
.Обязательный zsh one-liner (не считая разовой загрузки дополнительных компонентов):
Мы используем
stat
встроенныйzsh/stat
модуль иzmv
функцию для переименования файлов. А вот дополнительный, который помещает дату до продления, если таковые имеются.источник
Как я понял, мы заранее не знаем, какова дата модификации. Поэтому нам нужно получить его из каждого файла, отформатировать вывод и переименовать каждый файл таким образом, чтобы он включал дату изменения в имена файлов.
Вы можете сохранить этот скрипт как «modif_date.sh» и сделать его исполняемым. Мы вызываем его с целевым каталогом в качестве аргумента:
modif_date.sh txt_collection
Где «txt_collection» - это имя каталога, в котором находятся все файлы, которые мы хотим переименовать.
источник
stat
утилиту или вообще не имеют ее.ls
не является надежным . В некоторых вариантах Unix имена пользователей и групп могут содержать пробелы, которые отбрасывают выравнивание столбцов даты.ls
как дата и время (а не дата и год), должны быть в текущем году. Это неправда. Это в последние шесть месяцев; это может быть в предыдущем году (например, с 27 сентября 2016 года по 31 декабря 2016 года в течение последних шести месяцев). (6) Риск попугая Wiki Грега (о котором @Gilles уже упоминал), имена файлов, содержащие символы новой строки и пробелы, могут привести к сбою. … (Продолжение)Вот версия однострочника cas, (основанная на oneliner goldschrafe), расширенная с идемпотентностью ,
т. е. распространяется на файлы с префиксом даты и времени, и делать это только для тех, у кого еще нет даты и времени .
Вариант использования: полезно, если вы добавляете новые файлы в каталог и хотите добавить префикс даты и времени для тех, у кого его еще нет.
источник
for f in *.jpg ; do jhead -ft "$f" ; done
source: unix.stackexchange.com/a/290755/9689