Recursivamente: de baixo para cima
Você provavelmente precisará fazer isso de forma recursiva, o que significa que você precisa garantir que a renomeação seja feita de baixo para cima . Se você iniciasse no nível mais alto, por exemplo, todos os arquivos e pastas abaixo seriam literalmente movidos e precisariam ser encontrados novamente, por exemplo:
/folder & co/some other folder/test & file.txt
- >
/folder and co/some other folder/test & file.txt
Aqui é onde python
'co_de% pode ajudar, para funcionar recursivamente , executado com o argumento os.walk()
, para garantir que funcione de baixo para cima.
Pelo mesmo motivo, você precisa renomear os arquivos primeiro, e as pastas, e o script abaixo também:
O script
#!/usr/bin/env python3
import shutil
import os
import sys
def move(subject):
shutil.move(os.path.join(root, subject), os.path.join(root, subject.replace("&", "and")))
for root, dirs, files in os.walk(sys.argv[1], topdown=False):
for f in files:
move(f)
for d in dirs:
move(d)
Como usar
- Copie o script abaixo em um arquivo vazio, salve-o como
topdown=False
-
Execute-o com o diretório com todos os seus arquivos e pastas como argumento:
python3 /path/to/move.py /path/to/directory
-
se o caminho incluir espaços, use aspas:
python3 /path/to/move.py '/path/to/directory'