Пакетное переименование файлов в папке

Как удалить текст из имен файлов в папке?

В настоящее время я пытаюсь:

rename s/"NEWER_(.*?)"//g *

Но ничего не получилось переименовать

[d3 ] У меня есть родительская папка с кучей подпапок, внутри файлов, что OneDrive считал отличной идеей добавить «(NEWER_timestamp)», и я хотел бы удалить это.

Имена файлов файлов:

getyou.ico (NEWER_1417529079.87)
o7pm.ico (NEWER_1417529184.89)
o7th.ico (NEWER_1417529135.81)
1
задан 16 December 2014 в 00:42

1 ответ

Вы должны использовать кавычки вне регулярного выражения (внутри, они берутся буквально в виде кавычек) и escape (. Try;

rename -n 's/ \(NEWER_\d{10}.\d{2}\)$//' *NEWER*

Точность выражения может быть не нужна, но вы не можете быть слишком осторожным при изменении файлов.

1
ответ дан 24 May 2018 в 00:57
  • 1
    все это делает, висит с reading filenames from STDIN Я уже в папке Родитель, где все эти файлы – Kevin 16 December 2014 в 00:59
  • 2
    @Kevin "Если в командной строке не указаны имена файлов, имена файлов будут считаться через стандартный ввод. & Quot; И так как оболочка оставляет *NEWER* так, как если бы никакие расширения не были найдены, вы, должно быть, допустили ошибку, или используете оболочку, которая заменила несогласованный подстановочный знак ничем. – muru 16 December 2014 в 01:05
  • 3
    скопирован и вставлен в оболочку Ubuntu 14.10 – Kevin 16 December 2014 в 01:26

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

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