Use grep to find content in files and move them if they match

user17582 picture user17582 · Sep 18, 2008 · Viewed 65.3k times · Source

I'm using grep to generate a list of files I need to move:

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

How can I pass this list to the mv command and move the files somewhere else?

Answer

daveb picture daveb · Sep 18, 2008
grep -L -Z -r 'Subject: \[SPAM\]' . | xargs -0 -I{} mv {} DIR

The -Z means output with zeros (\0) after the filenames (so spaces are not used as delimeters).

xargs -0

means interpret \0 to be delimiters.

Then

-I{} mv {} DIR

means replace {} with the filenames, so you get mv filenames DIR.