Eu tive um pequeno problema ao extrair arquivos RAR recursivamente. Estou usando esta linha find . -name '*.rar' -exec unrar e {} \; -exec rm {} \; && rm *.r*
e parece funcionar! Mas o problema é que os arquivos que estão sendo extraídos acabam na pasta de trabalho atual. Quando eu quero que eles sejam extraídos na pasta onde eles estão.
Este é um exemplo da estrutura de arquivos, duas pastas, Holdiday_pictures_greece e Holdiday_pictures_malta. Eles contêm arquivos rar (ou arquivos rar). Holdiday_pictures_greece.rar e o arquivo correspondente Holdiday_pictures_greece.r01 Holdiday_pictures_greece.r02 e assim por diante.
~$ ls
Holdiday_pictures_greece
Holdiday_pictures_malta
~$ cd Holdiday_pictures_greece
Holdiday_pictures_greece $ ls
Holdiday_pictures_greece.rar
Holdiday_pictures_greece.r01
Holdiday_pictures_greece.r02
Holdiday_pictures_greece $ cd ..
~ $ find . -name '*.rar' -exec unrar e {} \; -exec rm {} \; && rm *.r*
~ $ ls
greece_01.jpg
greece_02.jpg
malta_01.jpg
malta_02.jpg
Como você pode ver no meu exemplo acima, todos os arquivos de ambos os arquivos (Malta e Grécia) acabam no diretório ~
, se eu executei o script. O resultado esperado seria que eles acabaram na respectiva pasta, Holdiday_pictures_malta e Holdiday_pictures_greece. Também pode haver subpastas nas pastas. Exemplo Holdiday_pictures_greece/2011
contendo mais arquivos rar.
Eu tentei com -execdir, mesmo resultado, os arquivos acabam no diretório atual.
Assim, o resultado esperado seria percorrer todas as subpastas dentro do diretório atual, extrair os arquivos rar na pasta em que foram encontrados e, em seguida, excluir o arquivo rar.