浏览文件不可数的目录下的文件有哪些方法?

浏览文件不可数的目录下的文件有哪些方法?

我编写了一个脚本来将请求日志保存到其各个文件中。随着时间的推移,文件夹中的文件数量似乎增加了很多。现在我需要访问某个时间范围的一些日志,但我根本无法做到这一点。

日志文件名格式如下:2016-02-11_124805_4269_170784456256bc8305a7e8b1455194885_req.xml

到目前为止我已经尝试过

  • ls
  • tar -cvzf 2016-02-20.tar.gz 2016-02-20*.xml压缩文件
  • cat 2016-02-20_01* | grep -nr "text_to_search"
  • ls -lah >> ../list.log
  • find ./dirname -type f >> list2.log
  • 以及一个用于搜索的脚本

    for each_file in ./dirname/*
    do
    echo ls -lah $each_file >> ./dirname_file.log
    done
    

tar返回catarguments list too long其他人还没有给我回应。

任何帮助表示赞赏。

答案1

find ./dirname -type f -name "2016-02-20_01*"可能会起作用,尽管它仍然可能不会很快。

然后你可以这样做,

find ./dirname -type f -name "2016-02-20_01*" -print | xargs grep -n "text_to_search"

答案2

对于“ls”,我的印象是缓慢主要是由排序引起的。

'ls -f' 将禁用排序,根据我的经验(几年前我运行 nntp 服务器时使用 ext3 和 xfs),工作速度要快得多。

答案3

尝试这个:

perl -le 'opendir $d,".";while($f=readdir($d)){print $f if $f =~ /^2016-02-20_01/}'

这会直接读取目录条目,并且不会尝试对它们执行任何操作。如果您想实际查看文件的内容,可以使用:

perl -le 'opendir $d,".";while($f=readdir($d)){if($f =~ /^2016-02-20_01/){print "=== $f ===";open(my $i,"<",$f);while(<$i>){print};close($i)}}'

编辑:澄清一下,这假设您已经进入该目录。 (点指的是当前目录)。否则,替换“.”与目录路径。

相关内容