¿es posible usar rm para eliminar archivos y directorios que coinciden con un patrón de forma recursiva sin usar otros comandos?
unix
maintenance
rm
usuario15586
fuente
fuente

find | grep | xargs rm. Si hay archivos con espacios (o líneas nuevas), esto se romperá (y dependiendo de los nombres de los archivos y de dónde están los espacios) podría eliminar cosas que no tenía la intención de eliminar.find … -print0 | xargs -0 rmSerá mucho más robusto. Sin embargo, significará que no puede usargrepy debe usarfindlos predicados para hacer coincidir e imprimir0 solo los archivos deseados. El segundo ejemplo de Warren será más robusto comofind -type f -name '*~' -print0 | xargs -0 rm."sin usar otros comandos"
No.
fuente
Usando Bash, con
globstarset, sí :Pruébelo, por ejemplo
ls -1, primero, antesrmde enumerar los archivos que coinciden.Establece opciones a través de, por ejemplo
shopt -s globstar.Alternativamente, una
findvariante más corta :o para GNU
find:u otra alternativa para no GNU
find(un poco más lento):Para eliminar también los directorios, a medida que lo solicite: simplemente cambie
rmarm -rlos comandos anteriores y omita la coincidencia solo-type fen losfindcomandos.fuente
Hubiera supuesto "rm -rf", ¿dónde hay una combinación de nombres de archivo y patrones coincidentes como * y? etc (por ejemplo, hoy_log_2009 ????. log). Eso comenzará a partir del Dir actual y disminuirá de forma recursiva la eliminación de archivos que tengan ese patrón.
fuente
Si usa zsh (1) , active "globbing extendido" con
setopt extendedglob.zshrc. Prefijar el patrón con '** /' luego eliminará recursivamente:% rm -rf ** / <patrón>
Sin embargo, si hay muchos archivos para eliminar, debe recurrir a find (1) con xargs (1) o -exec, y también recomiendo hacerlo en scripts de shell.
fuente