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