com zsh
:
tar zcf ~/file.tar.gz 20130<1-4><1-15>
Se você tiver que usar bash
:
shopt -s extglob
tar zcf ~/file.tar.gz 20130[1-4]@(0?|1[0-5])
Eu tenho um grande número de arquivos em uma pasta, cada um com a data como o nome do arquivo.
Por exemplo
20130101
20130102
20130103
.
.
.
20130131
similarmente para outros meses 20130201 a 20130230, o padrão é [Ano] [Mês] [Dia].
Eu preciso fazer um arquivo tar dos primeiros quinze arquivos de JAN a APRIL
(ex. 2013[01-04][01-15]
), pois o intervalo de numeração de dois dígitos não é permitido em grep
. Como devo pesquisar esse padrão?
O bit grep é.
grep -zE "^20130[1-4](0[1-9]|1[0-5])$"
Use find para encontrar os nomes dos arquivos:
find . -maxdepth 1 -name "20130[1-4]0?" -o -name "20130[1-4]1[0-5]"
verifique se esse é o conjunto correto e use a saída como entrada para cpio
:
find . -maxdepth 1 -name "20130[1-4]0?" -o -name "20130[1-4]1[0-5]" | cpio --create --format=ustar -O file.tar
@richard apontou que isso poderia passar por subdiretórios (se um subdiretório corresponder ao padrão) (e esse shell expandisse o padrão, corrigido).
A expansão na linha de comando executa o risco da linha de comando tornando-se muito longa, o que pode acontecer se você tiver um arquivo a cada poucos segundos para cada dia ( 20130101-00005
, 20130101-00007
. em cpio
não tem problema.
Você pode tar czvf file.tar.gz $(ls | grep "201301\|201302\|201303\|201304" | grep -v "16\|17\|18\|19\|20\|21\|22\|23\|24\|25\|26\|27\|28\|29\|30\|31")
do diretório base.