搜索tgz中所有文件中的文本

时间:2018-05-04 11:52:57

标签: bash unix scripting sh

Unix Scripting

创建一个可以执行以下操作的Unix脚本:
1)搜索tgz中所有文件中的文本 2)在tgz的所有文件中搜索FileName 并创建一个包含结果的单独存档文件。“

脚本应该能够在params下面列出:

scriptname ""text"" ""file.tgz"" ""user""

输出/var/tmp/user/result_[time].tgz
结果文件应包含所有提供文本的文件。

scriptname ""FileName"" ""file.tgz"" ""user""

输出/var/tmp/user/result_{time}.tgz
结果tgz应该包含与名称“

匹配的所有文件

1 个答案:

答案 0 :(得分:1)

为了帮助您入门:

$ cat foo.txt                         # two test files
foo
baz
$ cat bar.txt
bar
baz
$ tar czvf test.tar.gz *.txt          # tar and gzip them
$ mkdir temp                          # working dir
$ cd temp                             # work in it 

在tgz (foo)中的所有文件中搜索文本test.tar.gz的脚本。

$ OIFS=$IFS
$ IFS=$'\n'                           # handle space in filenames     
$ for i in $(tar tzf ../test.tar.gz)  # list files in the tar and for loop them
  do 
    tar xzf ../test.tar.gz "$i"       # extract each file individually
    grep -l foo "$i"                  # grep for string foo in each file
    rm -f $i                          # rm extracted file
  done
foo.txt                               # the output
$ IFS=$OIFS