Você pode perl fazer isso, entrar na lista de arquivos de texto como um argumento de linha de comando e mudar os caminhos para se adequarem à sua configuração. :
#!/usr/bin/env perl
use strict;
use File::Find;
my $textFile = shift @ARGV;
my $filenames = {};
open F1, "<", $textFile or die "Cannot open file $textFile! $!\n";
while ( <F1> ){
chomp;
$filenames->{$_}++;
}
close(F1);
my $imgDir = "/home/user/Pictures/";
my $imgList = {};
find(\&findPics, "/home/user/Pictures/");
foreach(keys %$imgList){
if($filenames->{$_}){
system("/bin/cp $imgList->{$_} /path/to/newImages/");
}
}
sub findPics{
if($_ =~ /.+[jpg|jpeg|png|gif]/i){
$imgList->{$_} = $File::Find::name;
}
}
Edit: Eu modifiquei este programa como solicitado pelo op para recurse dentro do diretório fornecido para encontrar todas as imagens.