将文件从tar传递给命令

时间:2011-12-08 23:04:25

标签: linux

我需要解压多文件存档。我必须使用二进制文件来进行实际编写。

使用单个文件存档,我很满意

tar -Oxvf singlefile.tgz | writer filename

对于多个文件,tar有一个“--to-command”选项,用于将每个文件传递给指定的命令。听起来不错,但文件名怎么样?

>tar xvf test.tgz --to-command='writer' 2> /dev/null
tets1
test2
test3

tar似乎将文件名输出到它的stdout,我找不到在命令中获取文件名的方法。

有什么想法吗?

感谢, 亚历

2 个答案:

答案 0 :(得分:1)

如果您使用--to-command标志,则会在环境中提供有关该过程的各种元数据。正在运行tar -xf file.tar --to-command=env会:

TAR_VERSION=1.28
TAR_ARCHIVE=file.tar
TAR_VOLUME=1
TAR_BLOCKING_FACTOR=20
TAR_FORMAT=gnu
TAR_FILETYPE=f
TAR_MODE=0644
TAR_FILENAME=file1.txt
TAR_REALNAME=file1.txt
TAR_UNAME=james_pic
TAR_GNAME=users
TAR_ATIME=1501586107.32746318
TAR_MTIME=1492550943
TAR_CTIME=1501586107.32746318
TAR_SIZE=12345
TAR_UID=1001
TAR_GID=1000

出于您的目的,您可能需要TAR_FILENAME

答案 1 :(得分:0)

您是否阅读了tar man page和GNU tar documentation

您可能也会对tardy

感兴趣