Tente o seguinte:
find /path/to/parrent-dir -type f -exec rename -n 's:[^/]*(.*) .*$::' {} +
./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
- Todo
[^/]*(.*) .*$
corresponde apenas à última parte do caminho que não contém/
. E - Na regex acima,
(.*)
é um grupo de correspondência de tudo depois da última/
e antes de um espaço. Sua referência de volta será
.
-
.*$
corresponde tudo ao final$
do nome dos arquivos após o espaço. - Finalmente, na parte de substituição da renomeação
s/.../REPLACEMENT/
, apenas mantivemos o grupo correspondente entre o último\
e um espaço(.*)
, que é conhecido como grupo de correspondências.