Переименуйте все .txt файлы внутри подпапок с помощью «find» - proUbuntu
Винтажный Клуб для гитаристов
3 голосов
/

Я хочу переименовать все .txt файлы в папке. Это переименование действительно переименовать все .txt для меня:

rename 's/\.txt//g' *.txt -v

но когда я хочу переименовать все подпапки с помощью

find ./ -type d -execdir rename 's/\.txt//g' *.txt -v ";"

Это показывает мне:

Can't rename *.txt *: No such file or directory
Can't rename *.txt *: No such file or directory
...

Также find ./ -type -d показывает мне текущие и все подпапки правильно.

Почему у меня No such file or directory сообщение?

1 Ответ

6 голосов
/

Вам необходимо правильно использовать синтаксис find -exec, используя '{}' для представления найденных файлов

find ./ -type d -name '*.txt' -execdir rename -n 's/\.txt//g' '{}' \;

Удалите -n после rename после того, как вы его протестировали.

(при условии, что вы действительно хотите изменить имена каталогов, а не обычные имена файлов - если это так, используйте -type f вместо type -d)

Добро пожаловать на сайт proUbuntu, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...