Você pode encontrar os caminhos usando sua lista de nomes e find , mas você pode ser pego por um pequeno caso, dado quando você tem os arquivos com o mesmo nome em diretórios diferentes.
Se isso não importa realmente, você pode fazer o seguinte:
find <main_directory> | grep -f mylist.txt
E, em seguida, use a lista para o comando tar . O comando completo pode se parecer com:
tar cvf allfiles.tar -T <(find <main_directory> |
grep -f mylist.txt --color=never)
Observe que você deve usar --color=never , caso contrário, se as cores estiverem ativas para o seu grep, você estará enviando uma entrada inválida para tar .
Para ignorar distinções de maiúsculas e minúsculas, neste caso, em grep , que é o arquivo realmente de filtragem , você pode simplesmente adicionar a sinalização -i :
tar cvf allfiles.tar -T <(find <main_directory> |
grep -i -f mylist.txt --color=never)