
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 tar
comando. 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)