Рекурсивно скопируйте папку и измените имена папок / файлов скопированных файлов. - PullRequest
1 голос
/ 27 января 2020

Мне нужно скопировать большую папку и переименовать все файлы и папки внутри, если они содержат указанную строку c. В основном я хочу скопировать все и изменить любой экземпляр 10 на 11.

Например, если у меня есть папка, структурированная так:

mainfolder10
   -group10
       -group10.js
       -group10.html

Я хочу ее скопировать это выглядит так:

mainfolder11
   -group11
       -group11.js
       -group11.html

Я также мог бы сначала скопировать его с помощью cp -r mainfolder10/ mainfolder11/, а затем использовать другую команду или скрипт для переименования файлов. Я просто ищу что-нибудь, чтобы не делать это вручную.

Я хочу выполнить sh в bash, узле или python ... что бы вы ни рекомендовали. Кто-нибудь знает простой способ сделать это?

1 Ответ

1 голос
/ 27 января 2020

Обычная техника рекурсии по каталогам и файлам заключается в использовании os.walk () :

 for root, dirs, files in os.walk('somepath'):
      ...

Оттуда вы можете использовать os.rename () или любой из shutils по мере необходимости для каждого файла в отдельности или для каждого каталога.

Чтобы избежать путаницы, я переименовал бы все файлы на первом проходе, а затем сделал бы второй проход, чтобы переименовать каталоги.

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