首页 > 解决方案 > 如何使用相同的文件夹名称 tar gzip

问题描述

全部,我需要对文件夹进行 tar gzip 压缩,并且名称应与原始文件夹名称相同。

示例目录:/user/abc/documents/20190101 我需要通过不明确指定文件夹名称来将 20190101 文件夹 tar 到 20190101.tar.gz。

tar -czvf /user/abc/documents/20190101.tar.gz /user/abc/documents/20190101/testing/20190506-081500000

标签: shellgziptar

解决方案


试试这个,如果你可以使用 bash:

目标文件

#!/bin/bash
name=$(sed 's@\(.*/\)\([0-9]*\)/.*@\1|\2@' <<< "$1")
tar -czvf "${name%%|*}${name##*|}.tar.gz" "$1"

用法

targz.sh "/user/abc/documents/20190101/testing/20190506-081500000"

解释

sed '              # use sed
s@                 # substitute
\(.*/\)            # save first part into arg1 (\1)
\([0-9]*\)/        # save date into arg2 (\2)
.*@                # ignore all char to the end
\1|\2@' <<< "$1"   # print \1 | \2

${name%%|*}        # \1 --> path
${name##*|}        # \2 --> date

推荐阅读