跳脱字符
(\)
。但是在
/etc/*
的那个
*
则是
bash
的通配符!
代表的是文件的档名喔!不过由上
述的这个½果中,我们½能找到
/etc
底下第一层子目录的数据,无法找到次目录的数据,
如果想
要连同完整的
/etc
次目录数据,就得要这样做:
[dmtsai@study ~]$
grep '
\
*' $(find /etc
-
type f ) 2> /dev/null
#
如果只想列出
档
名而不要列出
内
容的
话
,使用底下的方式
来处
理即可喔!
[dmtsai@study ~]$
grep
-
l '
\
*' $(find /etc
-
type f ) 2> /dev/null
2.
但如果文件数量太多呢?如同上述的案例,如果要找的是全系统
(/)
呢?你可以这样做:
[dmtsai@study ~]$
grep '
\
*' $(find /
-
type f 2> /dev/null )
-
bash: /usr/bin/grep: Argument list too long
真要命!由于指令列的内容长度是有限制的,因此当搜寻的对象是整个系统时,上述的指令会发生
错误。那该如何是好?
此时我们可以透过管线命令以及
xargs
来处理。举例来说,让
grep
每次½
能处理
10
个档名,此时你可以这样想:
a.
先用
find
去找出文件;
b.
用
xargs
½这些文件每次丢
10
个给
grep
来作为参数处理;
c.
grep
实际开始搜寻文件内容。
所以整个作法就会变成这样:
[dmtsai@study ~]$
find /
-
type f 2> /dev/null | xargs
-
n
10 grep '
\
*'
3.
从输出的½果来看,数据量实在非常庞大!那如果我只是想要知道檔名而已呢?你可以透过
grep
的
功能来找到如下的参数!
[dmtsai@study ~]$
find /
-
type f 2> /dev/null | xargs
-
n 10 grep
-
l '
\
*'
.
情境模拟题二:使用管线命令配合正规表示法½立新指令与新变量。我想要½立一个新的指令名为
myip
,
这个指令能够½我系统的
IP
捉出来显示。而我想要有个新变量,变量名为
MYIP
,这个变量可以记录我
的
IP
。
处理的方式很简单,我们可以这样试看看:
1.
首先,我们依据本章内的
ifconfig, sed
与
awk
来取得我们的
IP
,指令为: