首页 > 解决方案 > 在 tgz 的所有文件中搜索一个文本

问题描述

Unix 脚本

创建一个可以执行以下操作的 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 应该包含与名称匹配的所有文件”

标签: bashunixscriptingsh

解决方案


为了让你开始:

$ 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

推荐阅读