Ответ 1
outfile=$(pwd)/ps.tar;find . -type f | while read file; do
tar rf $outfile -C $(dirname $file) $(basename $file)
done
gzip $outfile
my tree
возвращает команду
tmp
`-- t
`-- e
|-- 23.ps
`-- s
|-- adsf.ps
`-- t
`-- dupa.ps
Как создать архив ps.tar.gz в каталоге tmp со следующей структурой:
tmp
|-- ps.tar.gz
| |-- 23.ps
| |-- adsf.ps
| `-- dupa.ps
`-- t
`-- e
|-- 23.ps
`-- s
|-- adsf.ps
`-- t
`-- dupa.ps
?
outfile=$(pwd)/ps.tar;find . -type f | while read file; do
tar rf $outfile -C $(dirname $file) $(basename $file)
done
gzip $outfile
для GNU tar вы можете использовать аргумент --xform
. Он принимает выражение sed
и применяет его к каждому имени файла. Поэтому для удаления всех символов до последнего /
вы можете использовать:
tar -c --xform s:^.*/:: your-files