linux按文件类型查找,linux文件类型查看与查找、以及在文件中查找字符串

一:查看文件类型:

file ,例: #file /etc/password

二:文件的查找:

1. which (寻找『执行文件』)

# which [-a] command 参数: -a :列出所有可以找到的指令,默认是第一个被找到的指令。 该指令是根据『PATH』这个环境变量所规范的路径,去搜寻执行文件名字。

2. whereis (寻找 【特定文件】 )

# whereis [-bmsu] 文件或目录名参数: -b :只找 binary 的文件 -m :只找在说明文件, manual 路径下的文件 -s :只找 source 来源文件 -u :没有说明文件的文件!

例: # whereis passwd 相关的都会被找出来

passwd: /usr/bin/passwd /etc/passwd /etc/passwd.OLD /usr/share/man/man1/passwd.1.gz /usr/share/man/man5/passwd.5.gz

# whereis -b passwd   passwd: /usr/bin/passwd /etc/passwd /etc/passwd.OLD

# whereis -m passwd passwd: /usr/share/man/man1/passwd.1.gz /usr/share/man/man5/passwd.5.gz

3. locate :只要包含被搜索名字的都会被找出来 。

# locate filename

例如:# locate passwd

/lib/security/pam_passwdqc.so /lib/security/pam_unix_passwd.so /usr/lib/kde3/kded_kpasswdserver.so /usr/lib/kde3/kded_kpasswdserver.la

因为 Linux 系统会将系统内的所有文件都记录在一个数据库文件 里面,而当使用whereis,locate 时,都会以此数据库文件的内容为准 ,因此,有的时后你还会发现使用这两个执行文件时,会找到已经被杀掉的文件 !而且也找不到最新的刚刚建立的文件,可以直接使用/usr/bin/updatedb来更新数据库文件 !所以该指令比find要快的多。可以自己选择需要建立文件数据库的目录!在 /etc/updatedb.conf 配置文件设定。 把『DAILY_UPDATE=no』改成 『DAILY_UPDATE=yes』。

4. find :强大,但缓慢 。

# find [PATH] [option] [action]

参数:

1). 时间有关的参数:

-atime n :在 n 天之前的『一天之内』被 access 过的文件;

-ctime n :在 n 天之前的『一天之内』被 change 过状态的文件;

-mtime n :在 n 天之前的『一天之内』被 modification 过的文件;

-newer file :file 为一个存在的文件,意思是说,只要文件比 file 还要新,就会被列出来

2). 使用者或组名称有关的参数 :

-uid n :n 查找UID相关的。这个 UID 是记录在/etc/passwd

-gid n :n 查找GID相关的,这个 GID 记录在/etc/group,

-user name :使用者账号! -group name:群组名;

-nouser :寻找文件的拥有者不存在 /etc/passwd 的!

-nogroup :寻找文件的拥有群组不存在于 /etc/group 的!

3). 与文件权限及名称有关的参数 :

-name filename:搜寻文件名称为 filename 的文件;

-size [+-]SIZE:搜寻比 SIZE 还要大(+)或小(-)的文件。这个 SIZE 的规格有: c: 代表 byte, k: 代表 1024bytes。

-type TYPE :搜寻文件的类型为 TYPE 的,类型主要有:一般正规文件 (f),装置文件 (b, c), 目录 (d), 连结文件 (l), socket (s), 及 FIFO (p) 等属性。

-perm mode :搜寻文件属性『刚好等于』mode的文件,这个mode为类似chmod的属性值,例 -rwsr-xr-x 的属性为 4755 !

-perm -mode :搜寻文件属性大于等于mode 的属性的文件。

-perm +mode :搜寻文件属性包含任一 mode 的属性的文件!

4). 额外可进行的动作:

-exec command :command 为其它指令,-exec 后面可再接额外的指令来处理搜寻到的结果。

-print :将结果打印到屏幕上, 默认就是。 例:将过去系统上面 24 小时内有更动过内容 (mtime) 的文件列出 # find / -mtime 0 0代表目前时间? # find / -mtime 3 之前的 3*24 ~ 4*24 小时之间 例:寻找 /etc 底下的文件,如果文件日期比 /etc/passwd 新就列出 # find /etc -newer /etc/passwd 例:搜寻 /home 底下属于cc的文件 # find /home -user cc 例:搜寻系统中不属于任何人的文件 # find / -nouser (这个对安全有一定作用,新装软件很多文件就不属于任何人) 例:找出名为 passwd 文件 # find / -name passwd 例:搜寻文件属性为 f 的文件 # find /home -type f 例:搜寻文件当中含有 SGID/SUID/SBIT 的属性 # find / -perm +7000 例:将上到的文件使用 ls -l 列出来 # find / -perm +7000 -exec ls -l {} /; {} 代表的是『由 find 找到的内容』, /; 则是表示-exec 的指令到此为止 -exec 最后一定要以 /; 结束 例:找出系统中,大于 1MB 的文件 #find / -size +1000k

三:在文件中查找字符串:

grep,egrep,fgrep:

最后是查找文件中的字符串,一般我们都用grep,但egrep支持全部的正则表达式。

比如我们要查看./intelism文件里的字符"xingshangdeluren"

grep -n "xingshangdeluren" ./intelism

比如要查看所有以A或者a开头的字符串那么:

grep -n -i '/

比如我们要看~/intel/文件下有没有SIZE为0的文件:

ls -l ~/intel/ | grep “0”| cut -f10 -d' '

當然,进入所需路径,越远离根目录越好,否则以下命令耗时可能很长。

grep -anR "you_string" * 这样是递归每个子目录,如果不想递归,把-R去掉。注意,这个命令不是很快就能完成的

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值