Интересный факт: если вы используете Archive Manager и извлекаете .tar.gz, чтобы у вас не было отметки «Сохранить структуру каталогов», вы получите тарбомбу .
tar -ztf
перечисляет все файлы и каталоги в файле tar. Есть ли способ перечислить все файлы в файле tar, без структуры каталогов?
tar xvzf my_tar.tar.gz --transform 's/.*\///'
. Но, к сожалению, это не меняет того, как оно отображается в списке,t
а неx
.Ответы:
Я не вижу способа сделать это со страницы руководства, но вы всегда можете отфильтровать результаты. Следующее предполагает, что в именах файлов нет новых строк:
Как это устроено
При установке разделителя полей
/
на последнее полеawk
знает о ($NF
) либо имя файла, если оно обрабатывает имя файла, либо пустое, если оно обрабатывает имя каталога (tar
добавляет косую черту к именам каталогов). Итак, мы в основном советуемawk
напечатать последнее поле, если оно не пустое.источник
Используя Джозеф Р. по рекомендации можно использовать регулярное выражение
[^/]$
дляgrep
для файлов путем поиска строк не заканчивается/
.tar tzf archive.tar.gz | grep -e "[^/]$"
источник
foo/bar
в отличие от простоbar
. Вы хотитеgrep -Eo '[^/]+$'
(с GNU grep).Предполагая, что ни одно из имен файлов не содержит символов новой строки:
Первая команда sed удаляет все, что находится перед последней
/
в строке, так что печатается только часть имени файла. Вторая команда удаляет строки, которые теперь пусты, т.е. строки, оканчивающиеся на a/
, которые являются каталогами.источник
С
pax
(команда POSIX для чтенияtar
файлов):(в котором перечислены все файлы независимо от их типа, включая каталоги).
источник