2013-10-15 2 views
1

Я хотел бы напечатать по крайней мере печать # файлов, извлеченных из работы тарбола экстрактаКак добавить прогресс бара в экстракт somearchive.tar.xz

xz -dc /path/to/somearchive.tar.xz | sudo tar xvpf - -C /path/to/some_directory 

Я думал, используя " \ г», как указано в this question, например

num=0 
when [\n received] 
    num=$(($num + 1)) 
    echo -ne "$num files extracted \r" 
end when 

мои навыки Баш подведи меня.

ответ

5

Если вы действительно хотите сделать это файл, который вы могли бы использовать:

sudo tar xvpf /path/to/archive.tar.xz -C /path/to/dir 2>&1 | 
    while read line; do 
     x=$((x+1)) 
     echo -en "$x extracted\r" 
    done 

Примечания:

  • Вы, наверное, не нужно xz отдельно, большинство tar реализации будут автоматически обнаруживать и разжимать это для вас.
  • tar читает с stdin по умолчанию, вам не нужно f -.

Вы должны смотреть в использовании pv вместо этого, это более точно и в более общем случае:

pv /path/to/archive.tar.xz | sudo tar xp -C /path/to/dir 
+0

Вы забыли 'xzcat' в вашем' pv' образца: 'ру /path/to/archive.tar .xz | xzcat | sudo tar -xpC/path/to/dir' –

+0

Приятный ответ, не знал, что вывод 'tar' может быть последовательным, например, – higuaro

+0

@ F.Hauri no Я не, см. мою заметку о' tar', автоматически обнаруживающей сжатия. – Kevin