我有files.tar.gz
里面有一堆csv文件,每个文件都有一个标题。我想循环遍历csv文件并一次处理一个。如果我只是zcat | tar -xO
,那么我就无法识别每个文件的开头,从而识别其标题。
如何一次循环存档中的文件,并将它们分别传送到处理命令?
答案 0 :(得分:1)
GNU tar
实用程序可以使用
tar -O -x -z -f archive.tgz file
这是一个可以解决您的问题的循环,假设为每个文件运行tar
并不是非常慢。
tar tzf files.tar.gz | while IFS= read -r f ; do
echo ">>> Processing file $f"
tar Oxzf files.tar.gz "$f" | head | cat -n ;
done
command | while IFS= read -r line
是一种BASH模式。当文件名中有空格时,清除IFS
变量对于代码正常工作是必要的。