Eu tenho uma pasta /home/userA/folderA
que contém muitos arquivos, pastas e subpastas. O que eu quero fazer é excluir todos os arquivos que possuem determinados nomes data.txt
e extensões glass.txt
. Também quero excluir qualquer pasta nomeada match
com todo o seu conteúdo. Eu ficaria grato por qualquer conselho sobre como fazer isso.
Responder1
Você pode excluir os arquivos e pastas nos subdiretórios de folderA
.
Para remover os arquivos, execute:
find /home/userA/folderA/* -type f \( -name "data.txt" -or -name "glass.txt" \) -delete
e para remover as pastas match
:
find /home/userA/folderA/* -depth -name "match" -type d -exec rm -rf "{}" \;
Responder2
E a opção detalhada (python):
#!/usr/bin/env python3
import os
import shutil
# --------------------------------------------------------
reorg_dir = "/path/to/your/folder"
remove_files = ("data.txt", "glass.txt")
remove_dirs = ("match")
# ---------------------------------------------------------
for root, dirs, files in os.walk(reorg_dir):
for name in files:
if name in remove_files:
os.remove(root+"/"+name)
for dr in dirs:
if dr in remove_dirs:
shutil.rmtree(root+"/"+dr)
Copie o script para um arquivo vazio, defina o diretório e se quiser/precisar: edite a lista de arquivos e pastas a serem removidos, salve-o como reorg.py e execute-o pelo comando:
python3 /path/to/reorg.py
Responder3
Você pode simplesmente executar o seguinte comando (tenha cuidado e verifique tudo porque isso não é reversível!) Isso excluirá todos os arquivos que contenham a palavra data ou glass que sejam arquivos .txt.
sudo rm -rf /home/userA/folderA/*data*.txt
sudo rm -rf /home/userA/folderA/*glass*.txt
Você pode encontrar qualquer pasta chamada match usando o comando localizar:
locate match
Depois de encontrar os caminhos, basta executar o comando acima para toda a pasta
sudo rm -rf /path/to/match
Atenciosamente, Lev