grep最多支持多少个文件|Linux系统中如何查看真实的可支持的最大文件打开数

A. linux一个文件夹内最多可以存多少文件

那要看使用哪个文件系统了。更多的子目录数量Ext3目前只支持32000个子目录,而回Ext4取消了这一限答制,理论上支持无限数量的子目录。更多的块和i-节点数量Ext3文件系统使用32位空间记录块数量和i-节点数量,而Ext4文件系统将它们扩充到64位。

B. Linux文件名的长度不能超过多少个字符

题主你好,

这个长度不是绝对的, 但大多数的linux系统:

文件名长度限制是255个字符;

路径名长度限制是4096个字符;

—–

具体情况题主可以在自己电脑上执行以下两个命令看一下自己本地的linux系统这两个长度情况:

文件名最大长度: getconf NAME_MAX /

路径名最大长度: getconf PATH_MAX /

我电脑上的情况:

—–

另外,这个信息其实都在linux一个名叫limits.h的头文件中写着呢, 有兴趣的话,题主自己可以找一下:

find /usr | grep limits.h | xargs -I {} grep -H 'NAME_MAX' {}

find /usr | grep limits.h | xargs -I {} grep -H 'PATH_MAX' {}

=====

希望可以帮到题主, 欢迎追问.

C. 查看linux默认能最多开启多少个文件数量

查看目录下有多少个文件及文件夹需在终端输入 ls | wc -w查看目录下有多少个文件需在终端输入 ls | wc -c查看文件夹下有多少个文件,多少个子目录需在终端输入 ls -l |wc -l若只想知道文件的个数,则需在终端输入 /bin/ls -l |grep ^-|wc -l

D. 如何用grep 检索多个目录里的文件

使用超级链接功能,请研究帮助中的“超级链接”。 即:在一个工作薄中首先创建一个主表(所有检索工作在此表中进行),然后将你要被检索的其他内容分别放在本工作薄的其他表中(分别有相应的被检索名称)。最后将主表中的文件名分别与对应的被检索表一一对应链接在一起即可。“主表”也相当于是一个目录一样的效果。

E. linux查看文件夹有多少个文件

Linux 查看文件夹下的文件个数(当前目录的文件数)ls -l grep "^-"wc -l或find ./company -type f wc -l查看某文件夹下文件的个数,包括子文件夹里的。ls -lRgrep "^-"wc -l查看某文件夹下文件夹的个数,包括子文件夹里的。ls -lRgrep "^d"wc -l说明:ls -l长列表输出该目录下文件信息(注意这里的文件,不同于一般的文件,可能是目录、链接、设备文件等)grep "^-"这里将长列表输出信息过滤一部分,只保留一般文件,如果只保留目录就是 ^dwc -l统计输出信息的行数,因为已经过滤得只剩一般文件了,所以统计结果就是一般文件信息的行数,又由于一行信息对应一个文件,所以也就是文件的个数。

F. linux一个文件夹内最多能放多少文件

linux的ext3文件系统一级子目录的个数默认为31998(个),准确地说是32000个。Linux为了cpu的搜索效率而规定的,要想改变数目限制需要重新编译内核。在kernel代码中有这样的:include/linux/ext2_fs.h:#define EXT2_LINK_MAX 32000include/linux/ext3_fs.h:#define EXT3_LINK_MAX 32000为什么说31998个呢?这是因为mkdir创建一个目录时,目录下默认就会创建两个子目录的,一个是.目录(代表当前目录),另一个是..目录(代表上级目录)。这两个子目录是删除不掉的,“ rm . ” 会得到“rm: cannot remove `.' or `..'”的提示。所以32000-2=31998。ext3文件系统下单个目录里的最大文件数无特别的限制,是受限于所在文件系统的inode数。在一个目录下,touch了100万个文件是没有问题的。但是肯定会受到所在文件系统的inode数的限制。df -i /dev/sdaX或者使用tune2fs -l /dev/sdaX或者mpe2fs -h /dev/sdaX查看可用inode数,后两个命令输出结果是一样的,但是跟df所得出的可用inode数会有些误差。网上有两种解决inode数限制的办法如下 2.1 重新mkfs,mkfs时将inode数调的多一些(根据你fs中文件的总数而定),块尺寸调得小一些(根据每个文件的平均大小而定) 2.2 使用loopback文件系统临时解决:在/usr中(也可以在别处)创建一个大文件,然后做成loopback文件系统,将原来的文件移到这个文件系统中,并将它mount到/usr下合适的位置。这样可以大大减少你/usr中的文件数目。但是系统性能会有点损失。

G. grep和| grep的区别

grep的工作方式是这样的,它在一个或多个文件中搜索字符串模板。如果模板包括空格,则必须被引用,模板后的所有字符串被看作文件名。搜索的结果被送到屏幕,不影响原文件内容。

grep可用于shell脚本,因为grep通过返回一个状态值来说明搜索的状态,如果模板搜索成功,则返回0,如果搜索不成功,则返回1,如果搜索的文件不存在,则返回2。我们利用这些返回值就可进行一些自动化的文本处理工作。

Grep命令中允许指定的串语句是一个规则表达式,这是一种允许使用某些特殊键盘字符的指定字符串的方法,这种方法中的特殊键盘字符可以用于代表其他字符也可以进一步定义模式匹配工作方式。例如:grep ".*hood" essay1。该命令将在文件essay1中搜索,显示出包含带有字符串hood的字的每一行。命令行中的点表示的是hood之前可以有任意字符,星号指的是在字符串之前点号所表示的任意字符可以有任意个(其中的双引号是可有可无的,但是当语句中包含短语或者空格时就必须加双引号)。 -l 列出文件内容符合指定的范本样式的文件名称。

同理more和| more也是一样。

(7)grep最多支持多少个文件扩展阅读:

GREP

表达符集

编辑

^

锚定行的开始 如:'^grep'匹配所有以grep开头的行。

$

锚定行的结束 如:'grep$'匹配所有以grep结尾的行。

.

匹配一个非换行符('
')的字符如:'gr.p'匹配gr后接一个任意字符,然后是p。

*

匹配零个或多个先前字符 如:' *grep' (注意*前有空格)匹配所有零个或多个空格后紧跟grep的行,需要用egrep 或者grep带上 -E 选项。 .*一起用代表任意字符。

[]

匹配一个指定范围内的字符,如'[Gg]rep'匹配Grep和grep。

[^]

匹配一个不在指定范围内的字符,如:'[^A-FH-Z]rep'匹配不包含A-F和H-Z的一个字母开头,紧跟rep的行。

(..)

标记匹配字符,如'(love)',love被标记为1。

<

锚定单词的开始,如:'<grep'匹配包含以grep开头的单词的行。

>

锚定单词的结束,如'grep>'匹配包含以grep结尾的单词的行。

x{m}

重复字符x,m次,如:'o{5}'匹配包含5个o的行。

x{m,}

重复字符x,至少m次,如:'o{5,}'匹配至少有5个o的行。

x{m,n}

重复字符x,至少m次,不多于n次,如:'o{5,10}'匹配5–10个o的行。

w

匹配文字和数字字符,也就是[A-Za-z0-9],如:'Gw*p'匹配以G后跟零个或多个文字或数字字符,然后是p。

W

w的反置形式,匹配一个或多个非单词字符,如点号句号等。

单词锁定符,如: 'grep'只匹配grep。[6]

用于egrep和 grep -E的元字符扩展集

+

匹配一个或多个先前的字符。如:'[a-z]+able',匹配一个或多个小写字母后跟able的串,如loveable,enable,disable等。

?

匹配零个或一个先前的字符。如:'gr?p'匹配gr后跟一个或没有字符,然后是p的行。

a|b|c

匹配a或b或c。如:grep|sed匹配grep或sed

()

分组符号,如:love(able|rs)ov+匹配loveable或lovers,匹配一个或多个ov。

POSIX字符类

为了在不同国家的字符编码中保持一至,POSIX(The Portable Operating System Interface)增加了特殊的字符类,如[:alnum:]是A-Za-z0-9的另一个写法。要把它们放到[]号内才能成为正则表达式,如[A- Za-z0-9]或[[:alnum:]]。在linux下的grep除fgrep外,都支持POSIX的字符类。

[:alnum:]

文字数字字符

[:alpha:]

文字字符

[:digit:]

数字字符

[:graph:]

非空字符(非空格、控制字符)

[:lower:]

小写字符

[:cntrl:]

控制字符

[:print:]

非空字符(包括空格)

[:punct:]

标点符号

[:space:]

所有空白字符(新行,空格,制表符)

[:upper:]

大写字符

[:xdigit:]

十六进制数字(0-9,a-f,A-F)

命令选项

编辑

-?

同时显示匹配行上下的?行,如:grep -2 pattern filename同时显示匹配行的上下2行。

-a, –text

等价于匹配text,用于(Binary file (standard input) matches)报错

-b,–byte-offset

打印匹配行前面打印该行所在的块号码。

-c,–count

只打印匹配的行数,不显示匹配的内容。

-f File,–file=File

从文件中提取模板。空文件中包含0个模板,所以什么都不匹配。

-h,–no-filename

当搜索多个文件时,不显示匹配文件名前缀。

-i,–ignore-case

忽略大小写差别。

-o, –only-matching

只显示正则表达式匹配的部分。(show only the part of a line matching PATTERN)

-q,–quiet

取消显示,只返回退出状态。0则表示找到了匹配的行。

-l,–files-with-matches

打印匹配模板的文件清单。

-L,–files-without-match

打印不匹配模板的文件清单。

-n,–line-number

在匹配的行前面打印行号。

-s,–silent

不显示关于不存在或者无法读取文件的错误信息。

-v,–revert-match

反检索,只显示不匹配的行。

-w,–word-regexp

如果被<和>引用,就把表达式做为一个单词搜索。

-R, -r, –recursive

递归的读取目录下的所有文件,包括子目录。 比如grep -R 'pattern' test会在 test 及其子目录下的所有文件中,匹配 pattern。

-V,–version

显示软件版本信息。

-A6

查找某些字符的内容,并下延伸6行

-B6

查找某些字符的内容,并上延伸6行

-C1

查找某些字符的内容,并上和向下各延伸1行

这几行后面的数字直接影响延伸数量,并以–符号分割搜索行的结果

实例

编辑

要用好grep这个工具,其实就是要写好正则表达式,所以这里不对grep的所有功能进行实例讲解,只列几个例子,讲解一个正则表达式的写法。

$ ls -l | grep '^a'

通过管道过滤ls -l输出的内容,只显示以a开头的行。

$ grep 'test' d*

显示所有以d开头的文件中包含test的行。

$ grep 'test' aa bb cc

显示在aa,bb,cc文件中匹配test的行。

$ grep '[a-z]{5}' aa

显示所有包含每个字符串有5个连续小写字符的字符串的行。

$ grep 'w(es)t.*1' aa

如果west被匹配,则es就被存储到内存中,并标记为1,然后搜索任意个字符(.*),这些字符后面紧跟着另外一个es(1),找到就显示该行。如果用egrep或grep -E,就不用""号进行转义,直接写成'w(es)t.*1'就可以了。

注意

编辑

在某些机器上,要使用-E参数才能够进行逻辑匹配(详见下)

grep "a|b" (匹配包含字符样式为"a|b"的行)

grep -E "a|b" (匹配包含字符样式为"a"或"b"的行)

man grep里面关于-E参数的说明是

-E

Treats each pattern specified as an extended regular expression (ERE). A NULL value for the ERE matches every line.

Note: The grep command with the -E flag is the same as the egrep command, except that error and usage messages are different and the -s flag functions differently.

拓展命令

编辑

egrep 命令,搜索文件获得模式。

egrep 命令会在输入文件(缺省值为标准输入)中搜索与用 Pattern 参数指定的模式相匹配的行。这些模式是完整的正则表达式就像在 ed 命令中的那样(除了 (反斜杠)和 \ (双反斜杠))。下列规则也应用于 egrep 命令:

* 一个正则表达式后面带一个 + (加号)会匹配一个或多个的正则表达式。

* 一个正则表达式后面带一个 ? (问号)会匹配零个或一个该正则表达式。

* 由 | (竖线)或者换行符隔开的多个正则表达式会匹配与任何一个正则表达式所匹配的字符串。

* 一个正则表达式可以被包括在“()”(括弧)中进行分组。

换行符将不会被正则表达式匹配。

运算符的优先顺序是 [, ], *, ?, +, 合并, | 和换行符。

注意: egrep 命令与 grep 命令带 -E 标志是一样的,除了错误消息和使用消息不同以及 -s 标志的功能不同之外。

egrep 命令会显示包含该匹配行的文件,如果您指定了多于一个 File 参数的话。

对 shell 有特殊含义的字符($, *, [, |, ^, (, ), ) 出现在 Pattern 参数中时必须带双引号。如果 Pattern 参数不是简单字符串,通常必须用单引号将整个模式括起来。在表达式中比如 [a-z],减号表示通过当前整理序列。整理序列可以定义等价的类以供在字符范围中使用。它使用了快速确定性的算法,有时需要外部空间。[7]

fgrep命令,为文件搜索文字字符串。

fgrep命令搜索 File 参数指定的输入文件(缺省为标准输入)中的匹配模式的行。fgrep命令特别搜索 Pattern 参数,它们是固定的字符串。如果在 File 参数中指定一个以上的文件fgrep命令将显示包含匹配行的文件。

fgrep命令于 grep 和 egrep 命令不同,因为它搜索字符串而不是搜索匹配表达式的模式。fgrep命令使用快速的压缩算法。$, *, [, |, (, ) 和 等字符串被fgrep命令按字面意思解释。这些字符并不解释为正则表达式,但它们在 grep 和 egrep 命令中解释为正则表达式。

因为这些字符对于 shell 有特定的含义,完整的字符串应该加上单引号(‘ … ’)。

如果没有指定文件,fgrep命令假定标准输入。一般,找到的每行都复制到标准输出中去。如果不止一个输入文件,则在找到的每行前打印文件名。

Unix命令行程序和内建指令(更多)

文件系统

▪cat▪cd▪chmod▪chown▪chgrp▪cksum▪cmp▪cp▪▪df▪fsck▪fuser▪ln▪ls▪lsattr▪lsof▪mkdir▪mount▪mv▪pwd▪rm▪rmdir▪split▪touch▪umask

程序

▪at▪bg▪chroot▪cron▪exit▪fg▪jobs▪kill▪killall▪nice▪pgrep▪pidof▪pkill▪ps▪pstree▪sleep▪time▪top▪wait

使用环境

▪env▪finger▪id▪logname▪mesg▪passwd▪su▪sudo▪uptime▪w▪wall▪who▪whoami▪write

文字编辑

▪awk▪comm▪cut▪ed▪ex▪fmt▪head▪iconv▪join▪less▪more▪paste▪sed▪sort▪strings▪talk▪tac▪tail▪tr▪uniq▪vi▪wc▪xargs

Shell 程序

▪alias▪basename▪dirname▪echo▪expr▪false▪printf▪test▪true▪unset

网络

▪inetd▪netstat▪ping▪rlogin▪netcat▪traceroute

搜索

▪find▪grep▪locate▪whereis▪which

杂项

▪apropos▪banner▪bc▪cal▪clear▪date▪dd▪file▪help▪info▪size▪lp▪man▪history▪tee▪tput▪

参考资料来源:网络-GREP

H. grep 查找一个目录下很多没规律的文件

find / -name "*.*" | xargs grep "wl0505" >>/home/filename*.*是文件名和扩展名,>>是把结果重定向到后面路径的文件中去,不在终端上显示了。 回答者: 爱摇滚爱音乐 – 大魔法师 六级 2009-10-20 23:20检举 find /etc -name "*" |xargs grep "wl0505" > ~/thefile 回答者: wuchangqian – 江湖大侠 八级 2009-10-21 08:57 ==脱裤子放屁 – 多此一举grep -rn wl0505 /etc/*一条命令就可以了

I. Linux系统中如何查看真实的可支持的最大文件打开数

在Linux下,我们使用ulimit -n 命令可以看到单个进程能够打开的最大文件句柄数量(socket连接也算在里面)。系统默认值1024。 对于一般的应用来说(象Apache、系统进程)1024完全足够使用。但是如何象squid、mysql、java等单进程处理大量请求的应用来说就有 点捉襟见肘了。如果单个进程打开的文件句柄数量超过了系统定义的值,就会提到“too many files open”的错误提示。如何知道当前进程打开了多少个文件句柄呢?下面一段小脚本可以帮你查看:lsof -n |awk '{print $2}'|sort|uniq -c |sort -nr|more 在系统访问高峰时间以root用户执行上面的脚本,可能出现的结果如下:# lsof -n|awk '{print $2}'|sort|uniq -c |sort -nr|more 131 24204 57 24244 57 24231 56 24264 其中第一行是打开的文件句柄数量,第二行是进程号。得到进程号后,我们可以通过ps命令得到进程的详细内容。ps -aef |grep 24204 mysql 24204 24162 99 16:15 ? 00:24:25 /usr/sbin/mysqld 哦,原来是mysql进程打开最多文件句柄数量。但是他目前只打开了131个文件句柄数量,远远底于系统默认值1024。但是如果系统并发特别大,尤其是squid服务器,很有可能会超过1024。这时候就必须要调整系统参数,以适应应用变化。Linux有硬性限制和软性限制。可以通过ulimit来设定这两个参数。方法如下,以root用户运行以下命令:ulimit -HSn 4096 以上命令中,H指定了硬性大小,S指定了软性大小,n表示设定单个进程最大的打开文件句柄数量。个人觉得最好不要超过4096,毕竟打开的文件句柄 数越多响应时间肯定会越慢。设定句柄数量后,系统重启后,又会恢复默认值。如果想永久保存下来,可以修改.bash_profile文件,可以修改 /etc/profile 把上面命令加到最后。

J. linux在目录中查找某个文件有多少个

你的问题描述的太模糊了1、如果是你的目录只是一级目录的话,目录里一个一个名只可能对应一个文件2、如果有多级目录的话,可以用“find /目录名 -name 文件名 -type f | wc -l”去查


赞 (0)