Переименовать файлы на основе отсортированной даты создания? - PullRequest
1 голос
/ 15 декабря 2009

У меня есть каталог, заполненный файлами со случайными именами. Я хотел бы иметь возможность переименовать их «файл 1», «файл 2» и т. Д. В соответствии с хронологическим порядком, то есть датой создания файла. Я мог бы написать короткий скрипт на Python, но тогда я бы ничего не изучал. Мне было интересно, если есть умная команда из 1 строки, которая может решить эту проблему. Если бы кто-нибудь мог указать мне правильное направление.

Я использую Zsh.

Спасибо!

1 Ответ

3 голосов
/ 15 декабря 2009

Для zsh:

saveIFS="$IFS"; IFS=$'\0'; while read -A line; do mv "${line[2]}" "${line[1]%.*}.${line[2]}"; done < <(find -maxdepth 1 -type f -printf "%T+ %f\n"); IFS="$saveIFS"

Для Bash (обратите внимание на различия в параметре для read и индексации с нуля вместо единицы):

saveIFS="$IFS"; IFS=$'\0'; while read -a line; do mv "${line[1]}" "${line[0]%.*}.${line[1]}"; done < <(find -maxdepth 1 -type f -printf "%T+\0%f\n"); IFS="$saveIFS"

Эти файлы переименовываются путем добавления даты изменения в начало исходного имени файла, которое сохраняется для предотвращения конфликтов имен.

Имя файла, полученное в результате, может выглядеть следующим образом:

2009-12-15+11:08:52.original.txt

Поскольку в качестве внутреннего разделителя полей (IFS) используется ноль, имена файлов с пробелами должны быть сохранены.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...