grep -L -Z -r 'Subject: \[SPAM\]' . | xargs -0 -I{} mv {} DIR
-Z означает вывод с нулями (\ 0) после имен файлов (поэтому пробелы не используются в качестве разделителей).
xargs -0
означает интерпретировать \ 0 как разделители.
Тогда
-I{} mv {} DIR
означает заменить {}
именами файлов, поэтому вы получите mv filenames DIR
.