循环遍历 tar 文件并对每个文件运行命令

Ken*_*n J 7 shell-script

我有一个将新代码提取到我的服务器的过程,其中代码打包在 tar 文件中。tar 中引用的每个文件都备份到特定目录。我想通过读取 tar 并相应地处理每个文件来自动执行此过程。如何在 shell 脚本中执行此操作?

谢谢!

小智 6

对于 GNU tar,您可以使用--to-command 选项

它将针对 tar 存档中的每个文件运行您的命令,并将文件的内容通过管道传输到其标准输入。

例如,这将打印存档中所有文件的 sha1 哈希值

tar -x -z -f archive.tar.gz --to-command 'echo $(sha1sum | cut -d  " " -f 1) $TAR_FILENAME'
Run Code Online (Sandbox Code Playgroud)