当前位置: 技术问答>linux和unix
求一脚本!关于搜索符合条件的文件,并且将文件打包备份.内详
来源: 互联网 发布时间:2015-11-23
本文导语: 需求如下 在目录a下有n层目录 搜索a目录下的文本文件,搜索条件是 (1个或多关键字)>=2次 比如关键字为 aaa 和 bbb 如果文件中有 两个aaa或更多就符合条件,同样有两个bbb或更多也符合条件 如果有一个aaa和一个bbb那...
需求如下
在目录a下有n层目录
搜索a目录下的文本文件,搜索条件是 (1个或多关键字)>=2次
比如关键字为 aaa 和 bbb
如果文件中有 两个aaa或更多就符合条件,同样有两个bbb或更多也符合条件
如果有一个aaa和一个bbb那不符合条件
将搜索到的文件最终打包.而且文件要保留原有目录结构.
先谢谢各位了 :)
在目录a下有n层目录
搜索a目录下的文本文件,搜索条件是 (1个或多关键字)>=2次
比如关键字为 aaa 和 bbb
如果文件中有 两个aaa或更多就符合条件,同样有两个bbb或更多也符合条件
如果有一个aaa和一个bbb那不符合条件
将搜索到的文件最终打包.而且文件要保留原有目录结构.
先谢谢各位了 :)
|
假定一行某个关键字只有一次,也就是grep aaa file|wc -l能得到某个文件中aaa的次数
下面是一个perl脚本
#!/usr/bin/perl
my @files = `find .`;
my $KEY = ["aaa", "bbb"];
my @output;
foreach my $file(@files) {
chomp($file);
foreach my $key(@$KEY) {
my $count = `grep $key $file|wc -l`;
if($count > 1) {
push @output, $file;
last;
}
}
}
open FILE, ">temp";
foreach my $file(@output) {
print FILE "$filen";
}
close FILE;
最后temp文件中就是需要打包的文件列表。稍微改一下就可以用了。
下面是一个perl脚本
#!/usr/bin/perl
my @files = `find .`;
my $KEY = ["aaa", "bbb"];
my @output;
foreach my $file(@files) {
chomp($file);
foreach my $key(@$KEY) {
my $count = `grep $key $file|wc -l`;
if($count > 1) {
push @output, $file;
last;
}
}
}
open FILE, ">temp";
foreach my $file(@output) {
print FILE "$filen";
}
close FILE;
最后temp文件中就是需要打包的文件列表。稍微改一下就可以用了。
|
grep -c aaa file就是行数了,不需要wc -l