Alfredo, parte de nuestro equipo de trabajo, nos ha hecho el favor de escribir este artículo porque domina muy bien este tema.
Solución:
find . -name abd.txt -delete
intenta eliminar todos los archivos nombrados abd.txt
que están en algún lugar del árbol de directorios de .
find . -wholename abd.txt -delete
intenta eliminar todos los archivos con un nombre de ruta completo de abd.txt
en algún lugar del árbol de directorios de .
Tales archivos nunca existirán: al usar find .
todas las rutas completas de los archivos encontrados comenzarán con ./
por lo que incluso un archivo en el directorio actual llamado abd.txt
tendrá camino ./abd.txt
y no coincidirá.
find . -wholename ./abd.txt -delete
voluntad eliminar el archivo en el directorio actual llamado abd.txt
.
find -wholename ./abd.txt -delete
hará lo mismo.
La eliminación fallará si abd.txt
es un directorio no vacío.
(Acabo de probar lo anterior con GNU find 4.6.0; otras versiones pueden comportarse de manera diferente).
rm -rf abd.txt
también trata de eliminar abd.txt
en el directorio actual, y si no es un directorio vacío, lo eliminará junto con todo lo que contiene.
para hacer esto con find
podrías usar
find . -depth ( -wholename ./abd.txt -o -wholename ./abd.txt/* ) -delete
Tiempo find -wholename GLOBPATTERN
intenta hacer coincidir cada archivo debajo del directorio actual (independientemente de la profundidad), el globo que usó con el rm
El comando solo se compara con archivos que son directamente (profundidad 1) en el directorio actual.
Por cierto. no necesitas el -r
cambiar a rm
a menos que desee eliminar recursivamente un directorio (debido a la .txt
extensión, supongo que solo desea eliminar archivos normales)
find
usado con -delete
busca los archivos y los elimina. Find
El comando toma la ruta para buscar los archivos y luego el -delete
flag elimina los archivos que se encuentran en esa ruta dada. Entonces, puedes decir que encontrar es más una borrado selectivo
Mientras rm -rf
El comando elimina archivos/directorios recursivamente sin importar qué. Significa rm
eliminará todos los archivos y directorios en la ruta específica. -r
significa recursividad y -f
es forzar la eliminación. Asi que, rm
junto con -rf
seguirá eliminando los directorios y archivos dentro de los directorios en la ruta de destino hasta que no encuentre más.