Переименование файлов с отметкой даты до предыдущего дня

Я хочу переименовать файлы в каталоге на последовательные номера на основе этого правила: filename- [some date] => filename- [дата предыдущего дня]

Например, file20170329 [ f2] и file20170327 должны быть переименованы в file20170328 file20170327 и file20170326.

У меня есть 100 файлов, поэтому мне нужен лучший трюк, чем переименование каждого файла отдельно. [!d5 ]

1
задан 30 March 2017 в 10:44

2 ответа

Если у вас есть 100 файлов (и у вас есть доступ к perl rename, как правило, в Ubuntu), вы можете использовать:

for n in {100..1}; do rename -n "s/$(date --date="$n days ago" +"%Y%m%d")/$(date --date="$(($n+1)) days ago" +"%Y%m%d")/" *; done

Теперь, когда вы используете -n для тестирования, жалуется следующим образом:

rename(file20170217, file20170216)
file20170218 not renamed: file20170217 already exists
file20170219 not renamed: file20170218 already exists

Но когда вы запускаете его без -n, файл больше не существует, поэтому переименование выполнено успешно:

for n in {100..1}; do rename "s/$(date --date="$n days ago" +"%Y%m%d")/$(date --date="$(($n+1)) days ago" +"%Y%m%d")/" *; done

Если у вас больше, чем 100 файлов, вам нужно увеличить диапазон до {150..1} или что угодно.

Это очень медленно. Для переименования 100 файлов потребуется 2 минуты или более. Но это работает.

4
ответ дан 23 May 2018 в 00:09

, или если вы предпочитаете подход к графическому интерфейсу, попробуйте krename, у него много модулей, и вы можете писать в нем собственные скрипты, «функция даты», «плагин с датой» может работать для вас

sudo apt-get install krename
0
ответ дан 23 May 2018 в 00:09

Другие вопросы по тегам:

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