Como criar vários arquivos tar com o script bash e usar data como nomes de arquivos?

4

Eu tenho muitos arquivos e quero criar um arquivo para cada 100 arquivos Ou seja, os primeiros 100 arquivos estão em um arquivo tar e os arquivos 101 a 200 estão em outro arquivo tar. E eu quero usar a data (nanossegundos) como nomes de tarja.

Eu tenho algo assim:

( cd "${SOURCE_DIR}" && find . -type f -name "${FILE_GLOB}" ) | 
  xargs -n 100 | xargs -I % sh -c '{tar -C "${SOURCE_DIR}" --files-from - % -cf "${DESTINATION_DIR}/$(date '+%Y%m%d%H%M%S%N')-$(uname -n).tar~"}'

Agora, o problema é que o '%' na string de formato de data aceitará o argumento de xargs , o que eu não quero.

Como posso evitar que isso aconteça?

    
por Ron 14.04.2014 / 21:15

1 resposta

2

Obviamente, use outro símbolo em vez de % .

Use por exemplo -I @ . Então será:

( cd "${SOURCE_DIR}" && find . -type f -name "${FILE_GLOB}" ) | 
  xargs -n 100 | xargs -I @ sh -c '{tar -C "${SOURCE_DIR}" --files-from - @ -cf "${DESTINATION_DIR}/$(date '+%Y%m%d%H%M%S%N')-$(uname -n).tar~"}' 
    
por 14.04.2014 / 21:24