十年网站开发经验 + 多家企业客户 + 靠谱的建站团队
量身定制 + 运营维护+专业推广+无忧售后,网站问题一站解决
当一个命令不想被执行的时候,前面加一个#就行了
创新互联主营五家渠网站建设的网络公司,主营网站建设方案,重庆APP开发公司,五家渠h5微信小程序搭建,五家渠网站营销推广欢迎五家渠等地区企业咨询
如果被用在指令中,或者被双引号括住的话,或者在双斜线后面,不具备以上功能
代表使用者的home目录
在 shell 中,担任"连续指令"功能的符号就是"分号"。譬如以下的例子:cd ~/backup ; mkdir startup ;cp ~/.* startup/.
专用在 case 的选项,担任 Terminator 的角色。
case "$fop" inhelp) echo "Usage: Command -help -version filename";;version) echo "version 0.1" ;;esac
在 shell 中,使用者应该都清楚,一个 dot 代表当前目录,两个 dot 代表上层目录。
CDPATH=.:~:/home:/home/web:/var:/usr/local
在上行 CDPATH 的设定中,等号后的 dot 代表的就是当前目录的意思。
如果档案名称以 dot 开头,该档案就属特殊档案,用 ls 指令必须加上 -a 选项才会显示。除此之外,在 regularexpression 中,一个 dot 代表匹配一个字元。
被单引号用括住的内容,将被视为单一字串。在引号内的代表变数的 符号,没有作用,也就是说,他被视为一般符号处理,防止任何变量替换。 heyyou=homeecho ' heyyou' # We get $heyyou
被双引号用括住的内容,将被视为单一字串。它防止通配符扩展,但允许变量扩展。这点与单引数的处理方式不同。
heyyou=homeecho "$heyyou" # We get home
在前面的单双引号,括住的是字串,但如果该字串是一列命令列,会怎样?答案是不会执行。要处理这种情况,我们得用倒单引号来做。
fdv=`date +%F`echo "Today $fdv"
在倒引号内的 date +%F 会被视为指令,执行的结果会带入 fdv 变数中。
这个符号常运用在运算当中当做"区隔"用途。如下例
#!/bin/bashlet "t1 = ((a = 5 + 3, b = 7 - 1, c = 15 / 3))"echo "t1= t1, a = a, b = $b"
在路径表示时,代表目录。
cd /etc/rc.dcd ../..cd /
通常单一的 / 代表 root 根目录的意思;在四则运算中,代表除法的符号。
let "num1 = ((a = 10 / 2, b = 25 / 5))"
在交互模式下的escape 字元,有几个作用;放在指令前,有取消 aliases的作用;放在特殊符号前,则该特殊符号的作用消失;放在指令的最末端,表示指令连接下一行。
# type rmrm is aliased to `rm -i'# \rm ./*.log
上例,我在 rm 指令前加上 escape 字元,作用是暂时取消别名的功能,将 rm 指令还原。
# bkdir=/home# echo "Backup dir, $bkdir = bkdir"Backup dir, bkdir = /home
上例 echo 内的 $bkdir,escape 将 变数的功能取消了,因此,会输出 bkdir,而第二个 $bkdir则会输出变数的内容 /home。
pipeline 是 UNIX 系统,基础且重要的观念。连结上个指令的标准输出,做为下个指令的标准输入。
who | wc -l
善用这个观念,对精简 script 有相当的帮助。
通常它代表反逻辑的作用,譬如条件侦测中,用 != 来代表"不等于"
if [ "$?" != 0 ]thenecho "Executes error"exit 1fi
在规则表达式中她担任 "反逻辑" 的角色
ls a[!0-9]
上例,代表显示除了a0, a1 .... a9 这几个文件的其他文件。
在 bash 中,这是一个内建指令:"什么事都不干",但返回状态值 0。
:
echo $? # 回应为 0
: f.
上面这一行,相当于cat/dev/nullf.
。不仅写法简短了,而且执行效率也好上许多。
有时,也会出现以下这类的用法
: ${HOSTNAME?} ${USER?} ${MAIL?}
这行的作用是,检查这些环境变数是否已设置,没有设置的将会以标准错误显示错误讯息。像这种检查如果使用类似 test 或 if这类的做法,基本上也可以处理,但都比不上上例的简洁与效率。
除了上述之外,还有一个地方必须使用冒号
PATH=$PATH:$HOME/fbin:$HOME/fperl:/usr/local/mozilla
在使用者自己的HOME 目录下的 .bash_profile或任何功能相似的档案中,设定关于"路径"的场合中,我们都使用冒号,来做区隔。
在文件名扩展(Filename expansion)上扮演的角色是匹配一个任意的字元,但不包含 null 字元。
# ls a?a1
善用她的特点,可以做比较精确的档名匹配。
相当常用的符号。在文件名扩展(Filename expansion)上,她用来代表任何字元,包含 null 字元。
# ls a a a1 access_log
在运算时,它则代表 "乘法"。
let "fmult=2 3"
除了内建指令 let,还有一个关于运算的指令expr,星号在这里也担任"乘法"的角色。不过在使用上得小心,他的前面必须加上escape 字元。
两个星号在运算时代表 "次方" 的意思。
let "sus=2**3"echo "sus = $sus" # sus = 8
变量替换(Variable Substitution)的代表符号。
vrs=123echo "vrs = $vrs" # vrs = 123
另外,在 Regular Expressions 里被定义为 "行" 的最末端 (end-of-line)。这个常用在grep、sed、awk 以及 vim(vi) 当中。
${} 变量的正规表达式
bash 对 ${} 定义了不少用法。以下是取自线上说明的表列
${parameter:-word} ${parameter:=word} ${parameter:?word} ${parameter:+word} ${parameter:offset} ${parameter:offset:length} ${!prefix*} ${#parameter} ${parameter#word} ${parameter##word} ${parameter%word} ${parameter%%word} ${parameter/pattern/string} ${parameter//pattern/string}
$* 引用script的执行引用变量,引用参数的算法与一般指令相同,指令本身为0,其后为1,然后依此类推。引用变量的代表方式如下:
$0, $1, $2, $3, $4, $5, $6, $7, $8, $9, ${10}, ${11}.....
个位数的,可直接使用数字,但两位数以上,则必须使用 {} 符号来括住。
$* 则是代表所有引用变量的符号。使用时,得视情况加上双引号。
echo "$*"
还有一个与 $* 具有相同作用的符号,但效用与处理方式略为不同的符号。
$@ 与 $* 具有相同作用的符号,不过她们两者有一个不同点。
符号 $* 将所有的引用变量视为一个整体。但符号 $@ 则仍旧保留每个引用变量的区段观念。
这也是与引用变量相关的符号,她的作用是告诉你,引用变量的总数量是多少。
echo "$#"
一般来说,UNIX(linux) 系统的进程以执行系统调用exit()来结束的。这个回传值就是status值。回传给父进程,用来检查子进程的执行状态。
一般指令程序倘若执行成功,其回传值为 0;失败为 1。
tar cvfz dfbackup.tar.gz /home/user /dev/nullecho"$?"
由于进程的ID是唯一的,所以在同一个时间,不可能有重复性的PID。有时,script会需要产生临时文件,用来存放必要的资料。而此script亦有可能在同一时间被使用者们使用。在这种情况下,固定文件名在写法上就显的不可靠。唯有产生动态文件名,才能符合需要。符号
或许可以符合这种需求。它代表当前shell 的 PID。
echo "$HOSTNAME, $USER, $MAIL" ftmp.$$
使用它来作为文件名的一部份,可以避免在同一时间,产生相同文件名的覆盖现象。
ps: 基本上,系统会回收执行完毕的 PID,然后再次依需要分配使用。所以 script 即使临时文件是使用动态档名的写法,如果script 执行完毕后仍不加以清除,会产生其他问题。
( ) 指令群组 (command group)
用括号将一串连续指令括起来,这种用法对 shell 来说,称为指令群组。如下面的例子:(cd ~ ; vcgh=`pwd` ;echo $vcgh),指令群组有一个特性,shell会以产生 subshell来执行这组指令。因此,在其中所定义的变数,仅作用于指令群组本身。我们来看个例子
# cat ftmp-01#!/bin/basha=fsh(a=incg ; echo -e "\n $a \n")echo $a#./ftmp-01incgfsh
除了上述的指令群组,括号也用在 array 变数的定义上;另外也应用在其他可能需要加上escape字元才能使用的场合,如运算式。
这组符号的作用与 let 指令相似,用在算数运算上,是 bash 的内建功能。所以,在执行效率上会比使用 let指令要好许多。
#!/bin/bash(( a = 10 ))echo -e "inital value, a = $a\n"(( a++))echo "after a++, a = $a"
有时候 script 当中会出现,大括号中会夹着一段或几段以"分号"做结尾的指令或变数设定。
# cat ftmp-02#!/bin/basha=fsh{a=inbc ; echo -e "\n $a \n"}echo $a#./ftmp-02inbcinbc
这种用法与上面介绍的指令群组非常相似,但有个不同点,它在当前的 shell 执行,不会产生 subshell。
大括号也被运用在 "函数" 的功能上。广义地说,单纯只使用大括号时,作用就像是个没有指定名称的函数一般。因此,这样写 script也是相当好的一件事。尤其对输出输入的重导向上,这个做法可精简 script 的复杂度。
此外,大括号还有另一种用法,如下
{xx,yy,zz,...}
这种大括号的组合,常用在字串的组合上,来看个例子
mkdir {userA,userB,userC}-{home,bin,data}
我们得到 userA-home, userA-bin, userA-data, userB-home, userB-bin,userB-data, userC-home, userC-bin,userC-data,这几个目录。这组符号在适用性上相当广泛。能加以善用的话,回报是精简与效率。像下面的例子
chown root /usr/{ucb/{ex,edit},lib/{ex?.?*,how_ex}}
如果不是因为支援这种用法,我们得写几行重复几次呀!
常出现在流程控制中,扮演括住判断式的作用。if [ "$?" != 0 ]thenecho "Executes error"exit1fi
这个符号在正则表达式中担任类似 "范围" 或 "集合" 的角色
rm -r 200[1234]
上例,代表删除 2001, 2002, 2003, 2004 等目录的意思。
这组符号与先前的 [] 符号,基本上作用相同,但她允许在其中直接使用 || 与 逻辑等符号。
#!/bin/bashread akif [[ ak 5 || ak 9 ]]thenecho $akfi
这个会时常看到,代表 or 逻辑的符号。
这个也会常看到,代表 and 逻辑的符号。
单一个 符号,且放在完整指令列的最后端,即表示将该指令列放入后台中工作。
tar cvfz data.tar.gz data /dev/null
这组符号在规则表达式中,被定义为"边界"的意思。譬如,当我们想找寻 the 这个单字时,如果我们用
grep the FileA
你将会发现,像 there 这类的单字,也会被当成是匹配的单字。因为 the 正巧是 there的一部份。如果我们要必免这种情况,就得加上 "边界" 的符号
grep '' FileA
在运算式中,她用来表示 "加法"。
expr 1 + 2 + 3
此外在规则表达式中,用来表示"很多个"的前面字元的意思。
# grep '10\+9' fileB109100910000910000931010009#这个符号在使用时,前面必须加上escape 字元。
在运算式中,她用来表示 "减法"。
expr 10 - 2
此外也是系统指令的选项符号。
ls -expr 10 - 2
在 GNU 指令中,如果单独使用 - 符号,不加任何该加的文件名称时,代表"标准输入"的意思。这是 GNU指令的共通选项。譬如下例
tar xpvf -
这里的 - 符号,既代表从标准输入读取资料。
不过,在 cd 指令中则比较特别
cd -
这代表变更工作目录到"上一次"工作目录。
在运算式中,用来表示 "除法"。
expr 10 % 2
此外,也被运用在关于变量的规则表达式当中的下列
{parameter%word} {parameter%%word}
一个 % 表示最短的 word 匹配,两个表示最长的 word 匹配。
常在设定变数时看到的符号。
vara=123echo " vara = $vara"
或者像是 PATH 的设定,甚至应用在运算或判断式等此类用途上。
常在条件判断式中看到,代表 "等于" 的意思。
if [ $vara == $varb ]
...下略
常在条件判断式中看到,代表 "不等于" 的意思。
if [ $vara != $varb ]
...下略
这个符号在规则表达式中,代表行的 "开头" 位置,在[]中也与"!"(叹号)一样表示“非”
输出/输入重导向
文件描述符(File Descriptor),用一个数字(通常为0-9)来表示一个文件。
常用的文件描述符如下:
文件描述符 名称 常用缩写 默认值
0 标准输入 stdin 键盘
1 标准输出 stdout 屏幕
2 标准错误输出 stderr 屏幕
我们在简单地用或时,相当于使用 0 或 1(下面会详细介绍)。
把cmd命令的输出重定向到文件file中。如果file已经存在,则清空原有文件,使用bash的noclobber选项可以防止复盖原有文件。
把cmd命令的输出重定向到文件file中,如果file已经存在,则把信息加在原有文件後面。
使cmd命令从file读入
从命令行读取输入,直到一个与text相同的行结束。除非使用引号把输入括起来,此模式将对输入内容进行shell变量替换。如果使用- ,则会忽略接下来输入行首的tab,结束行也可以是一堆tab再加上一个与text相同的内容,可以参考後面的例子。
把word(而不是文件word)和後面的换行作为输入提供给cmd。
以读写模式把文件file重定向到输入,文件file不会被破坏。仅当应用程序利用了这一特性时,它才是有意义的。
功能同,但即便在设置了noclobber时也会复盖file文件,注意用的是|而非一些书中说的!,目前仅在csh中仍沿用!实现这一功能。
cmd n 把输出送到文件描述符n
cmd mn 把输出到文件符m的信息重定向到文件描述符n
cmd - 关闭标准输出
cmd n 输入来自文件描述符n
cmd mn m来自文件描述各个n
cmd - 关闭标准输入
cmd n- 移动输入文件描述符n而非复制它。
cmd n- 移动输出文件描述符 n而非复制它。
注意: 实际上复制了文件描述符,这使得cmd file 21与cmd 21 file的效果不一样。
有些小伙伴经常在SHELL脚本中看到某些特殊的取值或者赋值方式,比如${}连起来用的含义
那么我们直接上答案: 替换/截取
假设我们定义一个变量:
我们获取fileName的值使用 :
替换其中的tempDir1为tempDir3,我们可以使用命令:
结果
替换全部的Dir为Path
结果
#, ##, %,%%的作用
#符号A,##符号A,%符号A,%%符号A
为什么#是取左边的,%是取右边的呢?
看我们键盘的布局:
数字键 3 4 5 分别对应 # $ % ,
#和% 正好位于取值符号$的左右两边,你知道了么。。。。。。
常见用法:
加入我们调用一个脚本,入参有多个,
[1] 每两行合并在一起
@dahuawk 'ORS=NR%2?" ":"\n"{print}'
[2] 每三行合并在一起
@dahuawk 'ORS=NR%3?" ":"\n"{print}'
[3] 每四行合并在一起
@dahuawk 'ORS=NR%4?" ":"\n"{print}'
[4] 统计std cell和sRam占的面积
@dahusummaryReport
[5] 找出drc的port相关的数量
@dahucat postroute_opt.drc | grep -B1 Type: | grep -v Type: | grep "\[" |-
[6] 获得选中的pin的名字
@innovusdbget selected.name
[7] 对一个文件,多目标删除
@dahused -i 's/MODE1\|MODE2\|MODE3\|MODE4\|MODE5//g'
[8] 获得不规则fplan的坐标组
@innovusdbget top.fplan.boxes
[9] 在某个目录下找到带某个字符的文件[区分大小写]
@dahufind -iname "*tcic*"
[10] 在某个目录下,遍历所有文件内容,得到含有某个字符/字符串的行
@dahugrep -r 'insertion delay' ./
[11] 查看当前的INNOVUS版本号
@dahuecho $INVS_VER
[12] 替换某个目录下所有文件内容
@dahused -i"s/查找的内容/替换后的内容/g"`grep -rl"查找的内容"./`
[13] 在gui界面下highlight某条path
@dahu ctd_trace -from * -to * -color *
[14] 引用${REV},为什么采用大括号{}
为了防止引用造成后面错乱。
如:/fs/omp_com_03/RELEASE/top2hlb/R1/HLB_DEF/${REV}/${top}.def.gz
[15] 解压命令
gzip -d FileName.gz
[16] 换某个cell的坐标 {AAA, BBB}
@innovus dbset [dbget top.inst.name XXXXXXXX].pt_x AAA
@innovus dbset [dbget top.inst.name XXXXXXXX].pt_y BBB
@innovus zoomSelected
[17] 设置某一个cell不用
@innovus set_dont_touch BUFF false
@innovus set_dont_touch BUFF true
[18] 找某个性质
@innovus dbSet [].?h
[19] 删去空白行
vim 中:g/^s*$/d
简单解释一下:
g :全区命令
/ :分隔符
^s*$ :匹配空行,其中^表示行首,s表示空字符,包括空格和制表符,*重复0到n个前面的字符,$表示行尾。连起来就是匹配只有空字符的行,也就是空行。
/d :删除该行
[20] echo 写入带有双引号""的内容。
echo ‘ “AAAbbb” ’ 1.tcl
[21] echo 写入带有单引号‘’的内容。
echo “ ‘AAAbbb' ” 1.tcl
[22] keep CPU 数目
@innovussetMultiCpuUsage -localCpu 16
@innovushistory keep 999999
[23] 打开xlsm文件
openoffice.org 文件
[24] 显示clock path路径
@innovus report_timing -to XXX -path_type full_clock
[25]报出没有被约束到的path
@innovus report_timing -to XXX -uncounstrained
[26]报出穿过path中的某一点
@innovus report_timing -to XXX -view
view = MODE + corner
[27] vim 全选(高亮显示 ):按esc后,然后ggvG或者ggVG
[28]
小括号里面是linux命令
比如
cat $(pwd)aaa
等价于
cat `pwd`aaa
其实是要执行里面的pwd然后用输出代替$()内容的。
而大括号里面则是数组变量
举个例子
$A = (hello linux shell)
$echo ${A[0]}
则会输出hello
find 命令的基本结构如下:
find 命令手册 : man find
find 命令中的 -name 选项可以根据文件名称进行检索( 区分大小写 )。如需要忽略文件名中的大小写,可以使用 -iname 选项。
-name 和 -iname 两个选项都支持 wildcards 。如:
例1:查找 /usr 目录下所有文件名以 .txt 结尾的文件
例2:查找 /usr 目录下所有文件名刚好为 4 个字符的文件
例3:查以大写字母开头的文件
例4:查以两个小写字母和两个数字开头的txt文件
类似的还有:
-lname -ilname
-path -ipath
-regx -iregx
有些时候,你需要在搜索时匹配某个文件或目录的 完整路径 ,而不仅仅是匹配文件名。可以使用 -path 或 -ipath 选项。
例1:如查找 /usr 下所有文件名以 .txt 结尾的文件或目录,且该文件的父目录必须是 src 。可以使用以下命令:
例2:在当前目录除aa之外的子目录内搜索 txt文件
例3:在当前目录,不再子目录中,查找txt文件
如果只想搜索得到文件 或 目录,即不想它们同时出现在结果中。可以使用 -type 选项指定文件类型。
-type 选项最常用的参数如下:
例:检索 /usr 下所有文件名以 python 开头的目录
find 命令支持 -empty 选项用来检索 为空 的文件或目录。空文件即文件里没有任何内容,空目录即目录中没有任何文件或子目录。
例:检索用户主目录下所有的空目录
find 命令也允许用户对当前的匹配条件进行 “反义” (类似于 逻辑非 操作)。
如需要检索 /usr 下所有文件名 不 以 .txt 为后缀的文件。可以使用以下命令:
也可以“翻转”任何其他的筛选条件,如:检索 /usr 下所有内容不为空的文件
为了检索归属于特定用户的文件或目录,可以使用 -user 选项。
例:检索根目录下所有属主为 starky 的文件
类似于 -user 选项, -group 选项则可以根据文件或目录的 属组 进行检索。
有些时候,需要根据文件创建或修改的时间进行检索。
Linux 系统中,与文件相关联的时间参数有以下三种:
与此对应的是 find 命令中的 -mtime , -atime 和 -ctime 三个选项。
这三个选项的使用遵循以下示例中的规则:
检索 /usr 下两天前被修改过的文件
如果觉得 -mtime 等选项以 天 为单位时间有点长,还可以使用 -mmin , -amin , -cmin 三个选项。
查找比 aa.txt 新 的文件
查找比 aa.txt 旧 的文件
查找比aa.txt新,比bb.txt旧的文件
-size 选项允许用户通过文件大小进行搜索(只适用于文件,目录没有大小……)。
表示文件大小的单位由以下字符组成:
另外,还可以使用 + 或 - 符号表示 大于 或 小于 当前条件。
检索文件大小高于 1 GB 的文件
find 命令可以使用 -perm 选项以文件权限为依据进行搜索。
9.1使用符号形式
例1:如需要检索 /usr 目录下权限为 rwxr-xr-x 的文件,可以使用以下命令:
例2:搜索 /usr 目录下所有权限为 r-xr-xr-x (即系统中的所有用户都只有读写权限)的文件和目录,可以使用以下命令:
很多时候,我们只想匹配文件权限的一个 子集 。比如,检索可以直接被任何用户执行的文件,即只关心文件的执行权限,而不用管其读写权限是什么。
上述的需求可以通过以下命令实现:
其中 a=x 前面的 / 符号即用来表示只匹配权限的某个子集(执行权限),而不用关心其他权限的具体设置。
9.2使用数字形式
例如:搜索 /usr 目录下权限为 644 (即 rwxr-xr-x )的文件
find 命令默认是以 递归 的方式检索项目的,这有时候会导致得到的结果数量非常巨大。可以使用 -maxdepth 限制 find 命令递归的层数。
例如:搜索时向下递归的层数最大为 3
在之前的例子中有出现多个搜索条件的 组合 以及对某个搜索条件的 反转 。
实际上 find 命令支持 “and” 和 “or” 两种逻辑运算,对应的命令选项分别是 -a 和 -o 。通过这两个选项可以对搜索条件进行更复杂的组合。
此外还可以使用 小括号 对搜索条件进行 分组 。注意 find 命令中的小括号常需要用 单引号 包裹起来。因小括号在 Shell 中有特殊的含义。
如检索 /usr 下文件名以 python 开头且类型为目录的文件
该命令等同于:
更复杂的组合形式如:
例4:在除dir0及子目录以外的目录下查找txt后缀文件
说明:-a 应该是and的缩写,意思是逻辑运算符‘与’(); -o应该是or的缩写,意思是逻辑运算符‘或’(||), -not 表示非.
命令行的意思是:如果目录dir0存在(即-a左边为真),则求-prune的值,-prune 返回真,‘与’逻辑表达式为真(即-path './dir0*' -a -prune 为真),find命令将在除这个目录以外的目录下查找txt后缀文件并打印出来;如果目录dir0不存在(即-a左边为假),则不求值-prune ,‘与’逻辑表达式为假,则在当前目录下查找所有txt后缀文件。
-delete 选项可以用来删除搜索到的文件和目录。
例如:删除 home 目录下所有的空目录:
-exec 选项可以对搜索到的结果执行执行该参数所给出的shell命令。形式为 command {} \; ,注意{}与\;之间有空格 。每当 find 命令检索到一个符合条件的文件,会使用其完整路径取代命令中的 {} ,然后执行 -exec 后面的命令一次。
例1:如需要将 home 目录下所有的 MP3 音频文件复制到移动存储设备(假设路径是 /media/MyDrive ),可使用下面的命令:
其中的 大括号 ( {} )作为检索到的文件的 占位符 ,而分号( ; )作为命令结束的标志。因为分号是 Shell 中有特殊含义的符号,所以需要使用单引号括起来或前面加上转义符 \ 。
例2:查看当前目录下的所有普通文件,并在 - exec 选项中使用 ls -l 命令将它们列出
例3:在多个文件中检索某个指定的字符串。如在用户主目录下的所有文件中检索字符串 hello ,可以使用如下命令:
创建 Gzip 格式的压缩文件的命令为:
现在假设需要将用户主目录下所有的 MP3 文件添加到压缩包 music.tar.gz 中,直观的感觉是,其命令应为如下形式:
实际情况是,这样得到的 music.tar.gz 其实只包含一个 MP3 文件。原因是 find 命令 每次 发现一个音频文件,都会再执行一次 -exec 选项后面的压缩命令。导致先前生成的压缩包被覆盖。
可以先让 find 命令检索出所有符合条件的音频文件,再将得到的 文件列表 传递给后面的压缩命令。完整的命令如下:
如果想浏览搜索到的文件(目录)的详细信息(如权限和大小等),可以直接使用 -ls 选项。
例如:浏览所有 1G 以上大小的文件的详细信息
与exec作用相同,区别在于,在执行命令之前,都会给出提示,让用户确认是否执行
与 exec 作用相同 ,起承接作用。区别在于 |xargs 主要用于承接删除操作 ,而 -exec 都可用 如复制、移动、重命名等
例1:查找以ap或may开头的文件
例2:查硬连接数大于2的文件或目录
例3:查找含特定字符串的文件。查找当前目录下含有"the string you want find…"字符串的文件:
例4:从根目录开始查tmpfile,一旦查到马上删除
例5:如何用find查找某一天更改的文件?可以使用这一行命令来实现:
A Guide to the Linux “Find” Command