linux - todos - Cómo eliminar carpetas con un cierto nombre
eliminar carpeta linux terminal (8)
En Linux, ¿cómo elimino las carpetas con un nombre determinado que están anidados en una jerarquía de carpetas?
Las siguientes rutas están debajo de una carpeta y me gustaría eliminar todas las carpetas llamadas a
.
1/2/3/a
1/2/3/b
10/20/30/a
10/20/30/b
100/200/300/a
100/200/300/b
¿Qué comando de Linux debo usar desde la carpeta principal?
Esto también funciona: eliminará todas las carpetas llamadas "a" y sus contenidos:
rm -rf `find -type d -name a`
Otro:
"-exec rm -rf {} /;" can be replaced by "-delete"
find -type d -name __pycache__ -delete # GNU find
find . -type d -name __pycache__ -delete # POSIX find (e.g. Mac OS X)
Para eliminar todos los directorios con el nombre foo
, ejecuta:
find -type d -name foo -a -prune -exec rm -rf {} /;
A las otras respuestas les falta algo importante: la opción -prune
. Sin- -prune
, GNU find eliminará el directorio con el nombre correspondiente y luego tratará de recurrir en él para encontrar más directorios que coincidan. La opción -prune
le dice que no se repita en un directorio que -prune
con las condiciones.
Si el directorio de destino está vacío, use find, filter con solo directorios, filtre por nombre, ejecute rmdir:
find -type d -name a -exec rmdir {} /;
Si desea eliminar recursivamente su contenido, reemplace -exec rmdir {} /;
por -delete
o -prune -exec rm -rf {} /;
. Otras respuestas incluyen detalles sobre estas versiones, acéptalas también.
Tenía más de 100 archivos como
log-12
log-123
log-34
....
las respuestas anteriores no funcionaron para mí
pero el siguiente comando me ayudó.
find . -name "log-*" -exec rm -rf {} /;
di- -type
como .
por lo que elimina los archivos y las carpetas que comienzan con log-
y rm -rf
elimina carpetas recursivamente incluso si tiene archivos.
si quieres carpetas solo
find -type d -name "log-*" -exec rm -rf {} /;
archivos solo
find -type f -name "log-*" -exec rm -rf {} /;
Use find para el nombre "a" y ejecute rm para eliminar los nombrados de acuerdo con sus deseos, de la siguiente manera:
find . -name a -exec rm -rf {} /;
Pruébelo primero usando ls para listar:
find . -name a -exec ls {} /;
Para asegurarse de que esto solo elimine los directorios y no los archivos sin formato, use el arg "-type d" (como se sugiere en los comentarios):
find . -name a -type d -exec rm -rf {} /;
El "{}" es una sustitución para cada archivo "a" encontrado - el comando exec se ejecuta contra cada uno por sustitución.
encuentre path / to / the / folders -maxdepth 1 -name "my_ *" -type d -delete
find ./ -name "FOLDERNAME" | xargs rm -Rf
Debería hacer el truco. ADVERTENCIA, si accidentalmente bombea a .
o /
en xargs rm -Rf
toda su computadora se eliminará sin una opción para recuperarla, lo que requiere una reinstalación del sistema operativo.