2012-07-02 52 views
5

Quiero eliminar archivos de un directorio específico recursivamente. Por lo tanto, he utilizadoDiferencia entre 'find -delete' y 'rm -rf'?

find . -wholename "*.txt" -delete 

También podemos eliminar los archivos utilizando

rm -rf *.txt 

¿Cuál es la diferencia entre la eliminación del archivo usando rm y find ??

+3

Con 'find' se vuelve más específico sobre qué archivos eliminar, pero ambos terminan llamando' unlink() '[man page] (http://linux.die.net/man/2/unlink) en los archivos que está eliminando. – Wernsey

Respuesta

5

find . -wholename abd.txt -delete trata de eliminar todos los archivos denominados abd.txt que están en algún lugar en el árbol de directorios de .

rm -rf abd.txt intentos para eliminar abd.txt, y si es un directorio, todos los archivos y directorios en todo el árbol.

+0

Bien. Entonces, ¿cuál es la diferencia entre eliminación usando 'find -delete' y 'rm -rf'? –

+1

Usando 'find ...' escanea también subdirectorios, mientras usa 'rm' solo analiza los archivos que están en el directorio * actual *, no en un subdirectorio. –

+0

@MisterJack: con '-r',' rm' también elimina los subdirectorios. – reinierpost

3

Mientras find -wholename GLOBPATTERN intenta hacer coincidir todos los archivos bajo el directorio actual (independiente de la profundidad), el pegote que utilizó con el comando rm es sólo comparable con los archivos que son directamente (profundidad 1) en el directorio actual.

Btw. que no es necesario el interruptor -r a rm a menos que desee eliminar de forma recursiva un directorio (Debido a la extensión .txt, supongo que sólo desea eliminar los archivos normales)

1

find utilizarse con -delete, encuentra los archivos y los elimina . El comando Find toma la ruta para buscar los archivos y luego el indicador -delete borra los archivos encontrados en esa ruta determinada. Por lo tanto, se puede decir hallazgo es más de un de eliminación selectiva

Mientras rm -rf comando elimina los archivos/directorios de forma recursiva no importa qué. Significa que rm borrará todos los los archivos y directorios en la ruta específica. -r significa recursión y -f es force delete. Por lo tanto, rm junto con -rf continuará eliminando los directorios y archivos dentro de los directorios en la ruta de destino hasta que no encuentre más.

Cuestiones relacionadas