Linux命令备忘录

 

find - 查找文件

 

格式  find pathname -options [-print -exec -ok ...]

 

pathname: 查找的目录路径

-print 将匹配的文件输出到标准输出

-exec 对匹配的文件执行该参数所给出的shell命令。相应命令的形式为'command' { } \;,注意{   }\;之间的空格

-ok:   -exec的作用相同,只不过以一种更为安全的模式来执行该参数所给出的shell命令,在执行每一个命令之前,都会给出提示,让用户来确定是否执行。

 

 

选项

 -depth:在查找文件时,首先查找当前目录中的文件,然后再在其子目录中查找。

-follow:如果find命令遇到符号链接文件,就跟踪至链接所指向的文件。

 -mount:在查找文件时不跨越文件系统mount

-mtime -n +n 按照文件的更改时间来查找文件, - n表示文件更改时间距现在n天以内,+ n表示文件更改时间距现在n天以前。find命令还有-atime-ctime 选项,但它们都和-m time选项。

-name  按照文件名查找文件。

-perm  按照文件权限来查找文件。

 -nogroup 查找无有效所属组的文件,即该文件所属的组在/etc/groups中不存在。

-nouser 查找无有效属主的文件,即该文件的属主在/etc/passwd中不存在。

-newer file1 ! file2 查找更改时间比文件file1新但比文件file2旧的文件。

-prune 使用这一选项可以使find命令不在当前指定的目录中查找,如果同时使用-depth选项,那么-prune将被find命令忽略。

-size n[c] 查找文件长度为n块的文件,带有c时表示文件长度以字节计。

-type 查找某一类型的文件,诸如:

 

b - 块设备文件。

d - 目录。

c - 字符设备文件。

p - 管道文件。

l - 符号链接文件。

f - 普通文件。

-user  按照文件属主来查找文件。

 

 很好的文章http://www.linuxsir.org/main/?q=node/137

 

 

ContractedBlock.gif ExpandedBlockStart.gif Code
 

$ find logs -type f -mtime +5 -exec -ok rm {} ; # 在/logs目录中查找更改时间在5日以前的文件并删除它们

$find  ~  -name  "*.txt"  -print   #$HOME中查.txt文件并显示

$find  .  -name  "[a-z][a-z][0--9][0--9].txt"   -print  #查以两个小写字母和两个数字开头的txt文件

$find  .  -perm 777  -exec ls -l {} ;  #查所有用户都可读写执行的文件同

$find  .       -type d  -print  打印目录结构

$find  .  ! -type d  -print 打印非目录文件

$find /usr/include -name '*.h' -exec grep AF_INEF6 {} ; #/usr/include 所有子目录中的.h文件中找字串AF_INEF6

$find  .  -size  +1000000c  -print     #查长度大于1Mb的文件

$find  .  -size  100c     -print    # 查长度为100c的文件

$find  .  -size  +10  -print        #查长度超过期作废10块的文件(1块=512字节)

$find  /etc -name "passwd*"  -exec grep  "cnscn"  {}  ;  #看是否存在cnscn用户


find  -name  april*  fprint file     在当前目录下查找以april开始的文件,并把结果输出到file中


find  /mnt  -name tom.txt  -ftype vfat  在/mnt下查找名称为tom.txt且文件系统类型为vfat的文件

find  /mnt  -name t.txt ! -ftype vfat   在/mnt下查找名称为tom.txt且文件系统类型不为vfat的文件

find  /tmp  -name wa* -type l       在/tmp下查找名为wa开头且类型为符号链接的文件

find  /home  -mtime  -2          在/home下查最近两天内改动过的文件

find /home   -atime -1          查1天之内被存取过的文件

find /home -mmin   +60          在/home下查60分钟前改动过的文件

find /home  -amin  +30          查最近30分钟前被存取过的文件

find /home  -newer  tmp.txt        在/home下查更新时间比tmp.txt近的文件或目录

find /home  -anewer  tmp.txt       在/home下查存取时间比tmp.txt近的文件或目录

find  /home  -used  -2          列出文件或目录被改动过之后,在2日内被存取过的文件或目录

find  /home  -user cnscn         列出/home目录内属于用户cnscn的文件或目录

find  /home  -uid  +501          列出/home目录内用户的识别码大于501的文件或目录

find  /home  -group  cnscn        列出/home内组为cnscn的文件或目录

find  /home  -gid 501           列出/home内组id为501的文件或目录

find  /home  -nouser           列出/home内不属于本地用户的文件或目录

find  /home  -nogroup           列出/home内不属于本地组的文件或目录

find  /home   -name tmp.txt   -maxdepth  4  列出/home内的tmp.txt 查时深度最多为3层

find  /home  -name tmp.txt  -mindepth  3  从第2层开始查

find  /home  -empty            查找大小为0的文件或空目录

find  /home  -size  +512k         查大于512k的文件

find  /home  -size  -512k         查小于512k的文件

find  /home  -links  +2          查硬连接数大于2的文件或目录

find  /home  -perm  0700         查权限为700的文件或目录

find  /tmp  -name tmp.txt  -exec cat {} ;

find  /tmp  -name  tmp.txt  -ok  rm {} ;

find   /  -amin   -10     # 查找在系统中最后10分钟访问的文件

find   /  -atime  -2      # 查找在系统中最后48小时访问的文件

find   /  -empty        # 查找在系统中为空的文件或者文件夹

find   /  -group  cat     # 查找在系统中属于 groupcat的文件

find   /  -mmin  -5      # 查找在系统中最后5分钟里修改过的文件

find   /  -mtime  -1     #查找在系统中最后24小时里修改过的文件

find   /  -nouser        #查找在系统中属于作废用户的文件

find   /  -user   fred     #查找在系统中属于FRED这个用户的文件

 

grep - 文本搜索

格式  grep [options]
[options]主要参数:
-c:只输出匹配行的计数。
-I:不区分大小写(只适用于单字符)。
-h:查询多文件时不显示文件名。
-l:查询多文件时只输出包含匹配字符的文件名。
-n:显示匹配行及行号。
-s:不显示不存在或无匹配文本的错误信息。
-v:显示不包含匹配文本的所有行。
pattern正则表达式主要参数:
\:忽略正则表达式中特殊字符的原有含义。
^:匹配正则表达式的开始行。
$: 匹配正则表达式的结束行。
\<:从匹配正则表达式的行开始。
\>:到匹配正则表达式的行结束。
[ ]:单个字符,如[A]即A符合要求 。
[ - ]:范围,如[A-Z],即A、B、C一直到Z都符合要求 。
。:所有的单个字符。
* :有字符,长度可以为0。
ContractedBlock.gif ExpandedBlockStart.gif Code
.grep命令使用简单实例
$ 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′就可以了。
.grep命令使用复杂实例
假设您正在’
/usr/src/linux/Doc’目录下搜索带字符串’magic’的文件:
$ grep magic 
/usr/src/linux/Doc/*
sysrq.txt:
* How do I enable the magic SysRQ key?
sysrq.txt:
* How do I use the magic SysRQ key?
其中文件’sysrp.txt’包含该字符串,讨论的是 SysRQ 的功能。
默认情况下,’grep’只搜索当前目录。如果此目录下有许多子目录,’grep’会以如下形式列出:
grep: sound: Is a directory
这可能会使’grep’的输出难于阅读。这里有两种解决的办法:
明确要求搜索子目录:grep 
-r
或忽略子目录:grep 
-d skip
如果有很多输出时,您可以通过管道将其转到’less’上阅读:
$ grep magic 
/usr/src/linux/Documentation/* | less
这样,您就可以更方便地阅读。
有一点要注意,您必需提供一个文件过滤方式(搜索全部文件的话用 
*)。如果您忘了,’grep’会一直等着,直到该程序被中断。如果您遇到了这样的情况,按 <CTRL c> ,然后再试。
下面还有一些有意思的命令行参数:
grep 
-i pattern files :不区分大小写地搜索。默认情况区分大小写,
grep 
-l pattern files :只列出匹配的文件名,
grep 
-L pattern files :列出不匹配的文件名,
grep 
-w pattern files :只匹配整个单词,而不是字符串的一部分(如匹配’magic’,而不是’magical’),
grep 
-C number pattern files :匹配的上下文分别显示[number]行,
grep pattern1 | pattern2 files :显示匹配 pattern1 或 pattern2 的行,
grep pattern1 files | grep pattern2 :显示既匹配 pattern1 又匹配 pattern2 的行。
这里还有些用于搜索的特殊符号:
\
< 和 \> 分别标注单词的开始与结尾。
例如:
grep man 
* 会匹配 ‘Batman’、’manic’、’man’等,
grep ‘\
<man’ * 匹配’manic’和’man’,但不是’Batman’,
grep ‘\
<man\>’ 只匹配’man’,而不是’Batman’或’manic’等其他的字符串。
^’:指匹配的字符串在行首,
‘$’:指匹配的字符串在行尾,

 

 dd

指定大小的块拷贝一个文件,并在拷贝的同时进行指定的转换。

选项:
指定数字的地方若以下列字符结尾乘以相应的数字:b=512, c=1, k=1024, w=2, xm=number m
if=file 输入文件名,缺省为标准输入。
of=file 输出文件名,缺省为标准输出。
ibs=bytes 一次读入 bytes 个字节(即一个块大小为 bytes 个字节)。
obs=bytes 一次写 bytes 个字节(即一个块大小为 bytes 个字节)。
bs=bytes 同时设置读写块的大小为 bytes ,可代替 ibs 和 obs 。
cbs=bytes 一次转换 bytes 个字节,即转换缓冲区大小。
skip=blocks 从输入文件开头跳过 blocks 个块后再开始复制。
seek=blocks 从输出文件开头跳过 blocks 个块后再开始复制。(通常只有当输出文件是磁盘或磁带时才有效)
count=blocks 仅拷贝 blocks 个块,块大小等于 ibs 指定的字节数。
conv=conversion[,conversion...] 用指定的参数转换文件。

转换参数:
ascii 转换 EBCDIC 为 ASCII。
ebcdic 转换 ASCII 为 EBCDIC。
ibm 转换 ASCII 为 alternate EBCDIC.
block 把每一行转换为长度为 cbs 的记录,不足部分用空格填充。
unblock 使每一行的长度都为 cbs ,不足部分用空格填充。
lcase 把大写字符转换为小写字符。
ucase 把小写字符转换为大写字符。
swab 交换输入的每对字节。
noerror 出错时不停止。
notrunc 不截短输出文件。
sync 把每个输入块填充到ibs个字节,不足部分用空(NUL)字符补齐。

由于 dd 命令允许二进制方式读写,所以特别适合在原始物理设备上进行输入/输出。例如可以用下面的命令为软盘建立镜像文件:
dd if=/dev/fd0 of=disk.img bs=1440k
有趣的是,这个镜像文件能被 HD-Copy ,Winimage 等工具软件读出。再如把第一个硬盘的前 512 个字节存为一个文件:
dd if=/dev/hda of=disk.mbr bs=512 count=1

 

 

转载于:https://www.cnblogs.com/dubingsky/archive/2009/07/31/1535770.html

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值