Exclui arquivos e pastas com nome específico de um determinado diretório

6

Eu tenho uma pasta /home/userA/folderA esta pasta contém muitos arquivos e pastas e subpastas. O que eu quero fazer é excluir todos os arquivos que possuem determinados nomes data.txt e glass.txt . Eu também quero excluir qualquer pasta chamada match com todo o seu conteúdo. Eu ficaria grato por qualquer conselho sobre como fazer isso.

    
por Tak 28.09.2014 / 18:32

3 respostas

12

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 "{}" \; 
    
por Nathan Adams 28.09.2014 / 18:46
4

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 em um arquivo vazio, defina o diretório e, se desejar / precise: 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
    
por Jacob Vlijm 28.09.2014 / 18:58
1

Você pode simplesmente executar o seguinte comando (tenha cuidado e verifique novamente tudo porque isso não é reversível!) Isso excluirá quaisquer arquivos que contenham os dados da palavra ou o arquivo de vidro que são arquivos .txt.

sudo rm -rf /home/userA/folderA/*data*.txt

sudo rm -rf /home/userA/folderA/*glass*.txt

Você pode encontrar qualquer pasta chamada correspondência usando o comando locate:

locate match

Depois de encontrar os caminhos, basta fazer o comando acima para a pasta inteira

sudo rm -rf /path/to/match

Melhor Lev

    
por levlaz 28.09.2014 / 18:37