tar - Список извлеченных файлов

Заголовки, содержащие символы подчеркивания, считаются недействительными nginx, поэтому по умолчанию они не будут передаваться. Поведение может быть переопределено директивой underscores_in_headers. Например:

underscores_in_headers on;

Дополнительную информацию см. в этом документе .

0
09.10.2019, 01:08
2 ответа

Я буду использовать опцию --to-commandдля запуска печати всех извлеченных файлов

аргумент представляет собой команду, которая будет использовать переменную env TAR _FILENAME для получения имени файла и получит файл наSTDIN

Таким образом, вы должны прочитать STDINи создать извлеченный файл, вы можете распечатать на STDOUTсозданный вами файл

tar -xzf../ARCH.tgz --keep-newer-files \
   --to-command="sh -c $(printf '%q' \
  'mkdir -p "$(dirname "$TAR_FILENAME")";dd of="$TAR_FILENAME" >/dev/null 2>&1;echo "#EXTRACTED#$TAR_FILENAME" ')" > output_tar.txt

и в output_tar.txtу вас будет строка для каждого извлеченного файла.

см.https://www.gnu.org/software/tar/manual/html_node/Writing-to-an-External-Program.html

2
28.01.2020, 02:39

В зависимости от моего требования, Иногда мне нужно перечислить все доступные извлеченные файлы соответствует содержимому архива (, независимо от того, новее он или нет ).

В таком случае я могу перечислить эффективно извлеченные файлы, была проведена экстракция смолы (или нет ).

Я делаю так:

tar -xzf./ARCH.tgz --keep-newer-files
for file in $(tar -tf./ARCH.tgz 2>/dev/null)
do
  if [[ -e $file && ! -d $file ]]
  then
    echo $file
  fi
done > output_tar.txt

Возможно, менее явное, но краткое решение с использованием xargs:

tar -tf./ARCH.tar 2>/dev/null | xargs -L1 bash -c 'if [[ -e $0 && ! -d $0 ]]; then echo $0; fi;'
0
01.05.2021, 15:17

Теги

Похожие вопросы