Tengo una carpeta, /home/userA/folderA
esta carpeta contiene muchos archivos, carpetas y subcarpetas. Lo que quiero hacer es eliminar todos los archivos que tienen ciertos nombres data.txt
y glass.txt
. También quiero eliminar cualquier carpeta nombrada match
con 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