2012-09-26 13 views
9

Duplicar posible:
Command line: piping find results to rmencontrar y eliminar archivos .txt en bash

recientemente frigged mi disco duro externo con mis fotos en él (la mayoría son en DVD de todos modos, pero. .) por alguna partición friggery.

Afortunadamente pude recomponer las cosas con PhotoRec, otra utilidad de partición Unix y PDisk.

PhotoRec devolvió más de mil carpetas con tiza llena de cualquier cosa, desde archivos .txt hasta archivos .NEF importantes.

Así que traté de hacer la clasificación más fácil mediante el uso de Unix, ya que el buscador OSX simplemente se desmoronaría bajo tales solicitudes como para seleccionar y eliminar un billón de archivos .txt.

Pero encuentro algunas BS cuando trato de encontrar y eliminar archivos txt, o encuentro y muevo todos los jpegs recursivamente en una nueva carpeta llamada jpegs. Soy un novato de Unix, así que necesito ayuda, por favor.

Aquí es lo que hice en bash. (Estoy en el directorio que listará todas las carpetas y archivos sobre los que necesito actuar).

buscar. -name * .txt | rm

o

sudo find. -name * .txt | rm -f

Por lo que me está dando algunos BS que necesito para desvincular los archivos. Lo que sea.

Necesito encontrar todos los archivos .txt de forma recursiva y eliminarlos preferiblemente detallados.

Gracias.

+0

añadir la opción -R al comando UNIX. 'encontrar. -name * .txt | rm -Rf' http://www.computerhope.com/unix/urm.htm – Sense

Respuesta

15

No puede canalizar nombres de archivo a rm. Necesitará usar xargs en su lugar. Además, recuerde citar el patrón de archivo ".txt" o el shell lo expandirá.

find . -name "*.txt" | xargs rm 
+0

Parece que se han ocupado de los archivos .txt. Por alguna razón, cuando lo hice antes, me quedaban algunos archivos txt. Tal vez me había acercado a principios de cuando mi barra de título de bash estaba parpadeando y mv hacia adelante y hacia atrás. De todos modos, eso se encargó gracias. Me aseguraré de citar el patrón de archivo (no estaba en mi tutorial Lynda OSX Unix). – Propagator

+2

Eso tiene el potencial de ir gag en los nombres de archivos con espacios. Si su combo find/xargs lo maneja, es mejor: 'find. -name "* .txt" -print0 | xargs -0 rm' para crear cadenas terminadas en ASCII NUL. –

+0

Sí de hecho. Finder no puede encontrar archivos .txt. Increíble. – Propagator

13
find . -name "*.txt" -exec rm {} \; 
+0

Este es más difícil de recordar debido a {} \; negocios al final –

+0

Esto puede ser cierto, pero una vez que haya recordado esta sintaxis, le permite hacer muchas cosas genéricas con lo que devuelva el comando 'find'. – mana

5
$ find . -name "*.txt" -type f -delete 
Cuestiones relacionadas