Существует отличный сценарий переименования Perl, который поставляется с некоторыми дистрибутивами, в противном случае вы можете найти его в Интернете. (Я не уверен, где он находится официально, но вот оно ). Проверьте, написано ли ваше переименование Ларри Уоллом (раздел АВТОР man rename
). Это позволит вам сделать что-то вроде:
find . [-maxdepth 2] -name "*.tex" -exec rename 's/\.tex//' '{}' \;
Использовать -exec здесь проще всего, потому что нужно выполнить только одно действие, и несколько раз вызывать переименование не слишком дорого. Если вам нужно сделать несколько вещей, используйте форму «пока читаете»:
find . [-maxdepth 2] -name "*.tex" | while read texfile; do rename 's/\.tex//' $texfile; done
Если у вас есть что-то, что вы хотите вызвать только один раз:
find . [-maxdepth 2] -name "*.tex" | xargs rename 's/\.tex//'
Последний проясняет, насколько полезно переименование - если все уже в одном месте, у вас есть быстрое переименование regexp.