The grep commandgrep "Jane WIlliams" names.txt:%!xmllint --format -grep -lZd skip "<FacturaElectronica*" ./ |xargs -0I{} mv {} CE/grep -win "John Williams"-r makes search recursive, allowing to use ./grep -winr "John Williams" ./-l only show the filenames of the files that contain the match.-P Uses Perl regex instead of POSIX regex(Python uses Perl regex).-o, --only-matching Print only-matched(non-empty) parts of the file matching line, with each such part on different output line.-h, --no-filename Suppress prefixing of filenames on output.grep -lZd skip "<FacturaElectronica*" | xargs -0I{} mv {} CE/-d skip Silently skip directories.-Z, --null Output a zero byte after each result.Note: grep uses POSIX regular expressions by default in order to use PERL REGEX use -PNote: Remember command1 | xargs command2means the output of command1 is the input for command2.-w whole words-i case insensitivesource: Stackoverflow "Vim indent xml file"-0, --null Input items are terminated by null character.-Ireplace-str -I{} uses {} as placeholder.-B 4 see 4 lines before match-n line number-C 2 See -B 2 and A 2-A see 4 lines ahead match-n line numberOptionssearchregexfile(s)Basic optionsAdditional useful optionsSearching through multiple files./* -> Using ./ won't work, you need ./* For example ./*.txt-> This will also try to search folder, so use also file extension Example: ./*.xmlAlso importantFormat oneline xml in vimXargs