Eliminar archivos y carpetas con un nombre específico de un directorio determinado

Eliminar archivos y carpetas con un nombre específico de un directorio determinado

Tengo una carpeta, /home/userA/folderAesta carpeta contiene muchos archivos, carpetas y subcarpetas. Lo que quiero hacer es eliminar todos los archivos que tienen ciertos nombres data.txty glass.txt. También quiero eliminar cualquier carpeta nombrada matchcon todo su contenido. Agradecería cualquier consejo sobre cómo hacer esto.

Respuesta1

Puede eliminar los archivos y carpetas en los subdirectorios de folderA.

Para eliminar los archivos, ejecute:

find /home/userA/folderA/* -type f \( -name "data.txt" -or -name "glass.txt" \) -delete 

y para eliminar las carpetas match:

find /home/userA/folderA/* -depth -name "match" -type d -exec rm -rf "{}" \; 

Respuesta2

Y la opción detallada (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 el script en un archivo vacío, configure el directorio y, si desea/necesita: edite la lista de archivos y carpetas para eliminar, guárdelo como reorg.py y ejecútelo con el comando:

python3 /path/to/reorg.py

Respuesta3

Simplemente puede ejecutar el siguiente comando (¡tenga cuidado y vuelva a verificar todo porque esto no es reversible!). Esto eliminará cualquier archivo que contenga la palabra datos o vidrio que sean archivos .txt.

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

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

Puede encontrar cualquier carpeta llamada match usando el comando de localización:

locate match

Una vez que encuentre las rutas, simplemente ejecute el comando anterior para toda la carpeta

sudo rm -rf /path/to/match

Mejor, Lev

información relacionada