我需要将运行gunzip file.gz
的结果文件名存储到变量中。 The only answer I've found用于提前知道文件名。但是,就我而言,.gz
文件将被动态生成,因此接受的答案不起作用。
我尝试过:
cd /var/www/backup/db
DB_TAR=$( /usr/bin/ls site_name* -Rt | /usr/bin/head -1 )
DB=$( gunzip ${DB_TAR} )
echo "${DB}"
但输出中什么也没有。
答案 0 :(得分:1)
cd /var/www/backup/db || exit
{ IFS= read -r -d ' ' timestamp && IFS= read -r -d '' latest; } < <(
find site_name* -type f -name '*.gz' -printf '%T@ %p\0' | sort -znr
)
gunzip -- "$latest" || exit
uncompressed_latest="${latest%.gz}"
echo "$uncompressed_latest"
ls
本质上是容易出错的; BashFAQ #3描述了找到最新/最旧/ etc文件的更可靠方法,此处使用其中一种方法(尽管需要GNU find
和sort
)。${var%suffix}
返回var
的内容,并删除了模式suffix
的最短匹配项。