bash - 在 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 应该包含与名称匹配的所有文件”
解决方案
为了让你开始:
$ 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
推荐阅读
- javascript - 检测点击焦点
- java - Spring mvc项目未运行
- html - 如何将表中的行作为具有 ng-repeat 的 html 中的列
- sql - 如何创建儿童计数的索引视图
- javascript - 在javascript中序列化“没有冒号的对象”而不会丢失内部功能
- python - 如何解决python中的[Errno 13] Permission denied错误
- vue.js - 命名空间模块可以处理对根命名空间的突变吗?
- r - 通过 R Studio 基于变量创建两个新数据集(CSV 文件)
- java - Oracle 连接为空
- file-upload - 如何使用对话框和 jquery 在 APEX 5 上上传文件