exclui recursivamente subdiretórios e arquivos [duplicados]

0

Eu tenho a seguinte configuração de arquivos e diretórios:

-Parent_dir
    |-delme_dir
    |-delme_file
    |-aFile
    |-sub_dir
        |-delme_dir
        |-delme_file
        |-aFile
        |-sub_dir
            |-delme_dir
            |-delme_file
            |-aFile
    |-sub_dir2
        |-delme_dir
        |-delme_file
        |-aFile

Existe um comando que eu possa usar do Parent_dir para remover recursivamente todos os diretórios delme_dir e os arquivos delme_file ?

    
por Loay Ashmawy 26.03.2018 / 11:32

3 respostas

3

Em um único comando, você pode fazer isso:

find . \( -type d -name "delme_dir" -o -type f -name "delme_file" \) -delete

Se não houver outros diretórios ou arquivos compatíveis com o padrão delme_* , você pode fazer isso resumidamente.

find . -name "delme_*" -delete
    
por devWeek 26.03.2018 / 12:43
3

Você pode combinar find , xargs e rm :

find . -type f -a -name delme_files -print0 | xargs -0 rm

e

find . -type d -a -name delme_dir -print0 | xargs -0 rmdir

(quando você está no diretório Parent_dir )

Provavelmente existe uma maneira de combinar os dois find em apenas um, mas eu acho mais claro assim mesmo.

Os comandos find encontrarão os diretórios / arquivos nomeados de acordo com o seu exemplo e você canalizará os resultados para xargs que executará rm (remover) / rmdir (diretório de remoção) em cada um dos arquivos encontre "upstream", isto é, o comando file .

Se os diretórios não estiverem vazios, substitua rmdir por rm -Rf , mas isso removerá recursivamente todos os arquivos nos diretórios encontrados pelo comando find .

A combinação -print0 / -0 garantirá que todos os arquivos / diretórios serão tratados corretamente, mesmo aqueles que tenham espaços em seus nomes (talvez não sejam necessários aqui, mas melhor usar em casos genéricos).

Certifique-se de testar as coisas antes em dados não importantes e sempre ter backups.

    
por Patrick Mevzek 26.03.2018 / 11:51
1
shopt -s globstar
echo **/*delme* | xargs rm
    
por Josef Klimuk 26.03.2018 / 13:06