我正在编写一个脚本,用于搜索tar以查找字符串并将包含这些字符串的文件输出到文件夹 - 这样做是为了让我不必解压大文件然后搜索通过那个然后删除不必要的文件
这是我到目前为止所做的:
#!/bin/bash
tarname=$1
pattern=$2
count=1
tar -tf $tarname | while read -r FILE
do
tar -xf $tarname $FILE
##grep the pattern with the file here...
done
所以我遇到的问题是它假设tar文件中的tar是所有文件,但它们可以很容易地成为目录 - 有没有办法用这个代码递归地tar文件?
顺便说一下,这都是在Unix中,所以有些东西可能已经过时,可能无法访问更新版本的命令
答案 0 :(得分:1)
是的,您可以使用以下命令单独提取文件或目录:
tar xvf archive_file.tar /path/to/file
tar xvf archive_file.tar /path/to/dir/
从这里: http://www.thegeekstuff.com/2010/04/unix-tar-command-examples/
答案 1 :(得分:0)
您可以通过假设所有目录都包含" /"来跳过提取目录。最后例如:
if [ $(echo $FILE|grep -c /$) == "1" ]; then
echo "skipping directory"
else
tar -xf $tarname $FILE
fi