textos texto por egrep consola comando buscar archivos archivo linux shell scripting grep

linux - texto - Use grep para buscar contenido en archivos y moverlos si coinciden



egrep (9)

Estoy usando grep para generar una lista de archivos que necesito mover:

grep -L -r ''Subject: /[SPAM/]'' .

¿Cómo puedo pasar esta lista al comando mv y mover los archivos a otro lugar?


Esta alternativa funciona donde xargs no está disponible:

grep -L -r ''Subject: /[SPAM/]'' . | while read f; do mv "$f" out; done


Hay varias formas, pero esta es lenta pero segura:

IFS=$''/n''; # set the field separator to line break for $mail in $(grep -L -r ''Subject: /[SPAM/]'' .); do mv "$mail" your_dir; done; IFS='' ''; # restore FS


Puede pasar el resultado al siguiente comando usando grep ... | xargs mv {} destino

Compruebe xargs hombre para obtener más información.


Esto es lo que uso en Fedora Core 12:

grep -l ''Subject: /[SPAM/]'' | xargs -I ''{}'' mv ''{}'' DIR


Quizás esto funcione:

mv $(grep -l ''Subject: /[SPAM/]'' | awk -F '':'' ''{print $1}'') your_file


grep -L -Z -r ''Subject: /[SPAM/]'' . | xargs -0 -I{} mv {} DIR

La -Z significa salida con ceros (/ 0) después de los nombres de los archivos (por lo que los espacios no se utilizan como delímetros).

xargs -0

significa interpretar / 0 para ser delimitadores.

Entonces

-I{} mv {} DIR

significa reemplazar {} con los nombres de los archivos, por lo que obtienes los mv filenames DIR .


Trabajo perfecto para mi:

  • mueve los archivos que contienen el texto con la palabra MYSTRINGTOSEARCH al directorio MYDIR.

    encontrar . -type f -exec grep -il ''MYSTRINGTOSEARCH'' {} /; -exec mv {} MYDIR / /;

espero que esto ayude


mv `grep -L -r ''Subject: /[SPAM/]'' .` <directory_path>

Suponiendo que el grep que escribió devuelve las rutas de archivos que está esperando.


Esto es lo que me ayudó:

grep -lir ''spam'' ./ | xargs mv -t ../spam

Por supuesto, ya estaba en la carpeta requerida (por eso ./ ) y los moví a la carpeta vecina. Pero puedes cambiarlos a cualquier ruta.

No sé por qué la respuesta aceptada no funcionó. Además, no tenía espacios ni caracteres especiales en los nombres de los archivos; quizás esto no funcione.

Robado aquí: comando Grep para buscar archivos que contengan texto y moverlos