我想编写一个bash脚本来解压缩.tar.gz档案,对于每个结果文件,它将设置一个带有原始档案名称的附加属性。只是要知道解压缩文件的来源是什么。
我试图将内部文件存储在一个数组中,然后对其进行循环。
for archive in "$1"*.tar.gz; do
if [ -f "${archive}" ]
then
readarray -t fileNames < <(tar tzf "$archive")
for file in "${fileNames}"; do
echo "${file}"
tar xvzf "${archive}" -C "$1" --no-wildcards "${file}" &&
attr -s package -V "${archive}" "${file}"
done
fi
done
结果是仅提取一个文件,并且未设置任何额外的属性。
答案 0 :(得分:1)
#! /bin/bash
for archive in "$1"*.tar.gz; do
if [ -f "${archive}" ] ; then
# Unpack the archive into subfolder $1
tar xvf "$archive" -C "$1"
# Assign attributes
tar tf "$archive" | (cd "$1" && xargs -t -L1 attr -s package -V "$archive" )
fi
done
注意: