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

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

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

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

Но ничто это переименовываемый

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

Имена файлов в качестве примера:

getyou.ico (NEWER_1417529079.87)
o7pm.ico (NEWER_1417529184.89)
o7th.ico (NEWER_1417529135.81)
10
задан 15 December 2014 в 13:42

2 ответа

Попробуйте следующее:

find /path/to/parrent-dir -type f -exec rename -n 's:[^/]*(.*) .*$:$1:' {} +

./o7th.ico (NEWER_1417529135.81)                                 renamed as /o7th.ico
./sub-dir (NEWER_1417529135.81)/getyou.ico (NEWER_1417529079.87) renamed as /sub-dir (NEWER_1417529135.81)/getyou.ico
./sub-dir (NEWER_1417529135.81)/o7pm.ico (NEWER_1417529184.89)   renamed as /sub-dir (NEWER_1417529135.81)/o7pm.ico
./getyou.ico (NEWER_1417529079.87)                               renamed as /getyou.ico
./o7pm.ico (NEWER_1417529184.89)                                 renamed as /o7pm.ico
  • Весь [^/]*(.*) .*$ соответствия только последняя часть пути, который не содержит /. И
  • В вышеупомянутом regex, (.*) группа соответствия всему после в последний раз / и перед пространством . Его обратная ссылка будет $1.
  • .*$ соответствия все для окончания $ из имени файлов после пространства.
  • Наконец в сменной детали переименовывают s/.../REPLACEMENT/, мы просто сохранили подобранную группу, которая является между последним \ и пространством (.*), который известен как группа соответствий.
8
ответ дан 23 November 2019 в 04:33

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

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

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

2
ответ дан 23 November 2019 в 04:33

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

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