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

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

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

tar -cvf allfiles.tar -T mylist.txt

Mas descobri que os arquivos necessários estão espalhados em subdiretórios e minha lista contém apenas os nomes dos arquivos e não os caminhos.

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

Responder1

Você pode encontrar os caminhos usando sua lista de nomes e find, mas pode ser pego por um pequeno caso, quando você tem arquivos com o mesmo nome em diretórios diferentes.

Se isso realmente não importa, você pode fazer o seguinte:

find <main_directory> | grep -f mylist.txt

E então, use a lista para o seu tarcomando. O comando completo pode ser parecido com:

tar cvf allfiles.tar -T <(find <main_directory> |
    grep -f mylist.txt --color=never)

Observe vocêdeveuse --color=never, caso contrário, se as cores estiverem ativas para o seu grep, você estará enviando uma entrada inválida para tar.

Ignorar as distinções de caso, neste caso, em grep, que é o que realmentefiltragemarquivos, você pode simplesmente adicionar o sinalizador -i:

tar cvf allfiles.tar -T <(find <main_directory> |
    grep -i -f mylist.txt --color=never)

informação relacionada