Попытка рекурсивного поиска определенных файлов и изменение имени файла

Попытка рекурсивного поиска определенных файлов и изменение имени файла

Я пытаюсь выполнить рекурсивный поиск во всех подпапках файлов, в имени которых есть точки, и удалить точки (кроме последней)

Команда 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' {} \;

Связанный контент