Я пытаюсь выполнить рекурсивный поиск во всех подпапках файлов, в имени которых есть точки, и удалить точки (кроме последней)
Команда rename работает сама по себе, команда find тоже, но они не работают вместе:
find ./ -type f -execdir rename -n 's/\.(?=[^.]*\.)//g' *.txt \;
решение1
Использование glob в -execdir
команде не сработает, лучше дайте find
поиск нужных файлов и запустите rename
только их:
find ./ -type f -name "*.txt" -exec rename -n 's/\.(?=[^.]*\.)//g' {} \;
Оказывается, ваше rename
выражение не работает с путями, попробуйте вместо этого это:
find ./ -type f -name "*.txt" -exec rename -n 's:\.(?=[^./]*\.)::g' {} \;