Вы можете использовать find
для вывода базиса соответствующей команды mv
:
$ find mail -name *.partial.emlx -exec echo mv -v \'{}\' \'{}\' \;
mv -v 'mail/foo/3248324.partial.emlx' 'mail/foo/3248324.partial.emlx'
mv -v 'mail/bar/8757756.partial.emlx' 'mail/bar/8757756.partial.emlx'
Передать sed
, чтобы заменить окончательный экземпляр partial.emlx
на .emlx
:
$ find mail -name *.partial.emlx -exec echo mv -v \'{}\' \'{}\' \; | sed "s/partial\.emlx'$/emlx'/"
mv -v 'mail/foo/3248324.partial.emlx' 'mail/foo/3248324.emlx'
mv -v 'mail/bar/8757756.partial.emlx' 'mail/bar/8757756.emlx'
На этом этапе, если эти команды выглядят вменяемыми, вы можете просто скопировать / вставить их или передать sh
, чтобы выполнить их все.
$ find mail -name *.partial.emlx -exec echo mv -v \'{}\' \'{}\' \; | sed "s/partial\.emlx'$/emlx'/" | sh
mail/foo/3248324.partial.emlx -> mail/foo/3248324.emlx
mail/bar/8757756.partial.emlx -> mail/bar/8757756.emlx
Ваши файлы раньше :
$ tree mail
mail
├── bar
│ └── 8757756.partial.emlx
└── foo
├── 3248324.partial.emlx
└── 3248325.emlx
2 directories, 3 files
Ваши файлы после:
$ tree mail
mail
├── bar
│ └── 8757756.emlx
└── foo
├── 3248324.emlx
└── 3248325.emlx
2 directories, 3 files