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

Фактическое имя пакета может содержать некоторый суффикс (возможно, также префикс), попробуйте выполнить поиск пакетов, начинающихся со строки texstudio:

apt list --installed 'texstudio*'

Затем удалите найденный пакет (ы) , например:

sudo apt remove texstudio-qt4
2
задан 13 February 2018 в 14:25

3 ответа

Команда glob в команде -execdir не работает, лучше пусть find ищет нужные вам файлы и запускает rename только на них:

find ./ -type f -name "*.txt" -exec rename -n 's/\.(?=[^.]*\.)//g' {} \;

Выключает [ f6] не работает с путями, попробуйте это вместо:

find ./ -type f -name "*.txt" -exec rename -n 's:\.(?=[^./]*\.)::g' {} \;
1
ответ дан 22 May 2018 в 13:08
  • 1
    Спасибо за ответ. К сожалению, я получаю это при попытке выполнить команду (без -n): Can't rename ./test/t.e.s.t.txt /test/test.txt: No such file or directory – Henry 13 February 2018 в 14:41
  • 2
    Я думаю, что @ регулярное выражение Генри может быть исправлено, чтобы не требовать / после .: 's:\.(?=[^./]*\.)::g' – muru 13 February 2018 в 15:07
  • 3
    Обратите внимание, что вместо -exec вы можете использовать -execdir, чтобы rename не перепутал весь путь, хотя в этом случае я не уверен, насколько это помогает, поскольку find будет префикс каждого имени файла с [ f5] (я думаю, немного, так как вы можете просто заменить все точки, кроме ведущего) – steeldriver 13 February 2018 в 23:38

Команда 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' {} \;
1
ответ дан 17 July 2018 в 20:55

Команда 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' {} \;
1
ответ дан 23 July 2018 в 21:35

Другие вопросы по тегам:

Похожие вопросы: