Encontre uma lista de arquivos do arquivo de texto em subdiretórios e coloque no tarball?

1

Eu tenho uma lista de arquivos que eu preciso para tar. Normalmente, eu usaria

tar -cvf allfiles.tar -T mylist.txt

Mas eu descobri que os arquivos que eu preciso estão espalhados em subdiretórios e minha lista só tem os nomes dos arquivos e não os caminhos.

Existe uma maneira de combinar "encontrar" com o comando tar para encontrar os arquivos da minha lista onde quer que eles estejam em subdiretórios?

    
por Steve 03.01.2013 / 15:59

1 resposta

5

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)
    
por 03.01.2013 / 16:05