Как я могу разделить некоторый текст от имен файлов в папке?
Я в настоящее время пытаюсь:
rename s/"NEWER_(.*?)"//g *
Но ничто это переименовываемый
У меня есть родительская папка с набором подпапок, в файлы, что OneDrive думал, будет прекрасная идея добавить " (NEWER_timestamp)" к, и я хотел бы удалить это.
Имена файлов в качестве примера:
getyou.ico (NEWER_1417529079.87)
o7pm.ico (NEWER_1417529184.89)
o7th.ico (NEWER_1417529135.81)
Попробуйте следующее:
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
[^/]*(.*) .*$
соответствия только последняя часть пути, который не содержит /
. И (.*)
группа соответствия всему после в последний раз /
и перед пространством
. Его обратная ссылка будет $1
. .*$
соответствия все для окончания $
из имени файлов после пространства. s/.../REPLACEMENT/
, мы просто сохранили подобранную группу, которая является между последним \
и пространством (.*)
, который известен как группа соответствий. Необходимо рассмотреть использование кавычек вне regex (в, они взяты буквально в качестве кавычек), и выйдите (
. Попробуйте;
rename -n 's/ \(NEWER_\d{10}.\d{2}\)$//' *NEWER*
точность выражения не могла бы быть необходимой, но Вы не можете быть слишком осторожными при изменении файлов.