Linux常用命令(1)
查找文件:locate、find、grep
locate-->快速查找
用于定位要查找的文件,此命令很快,后接需要查找的文件名即可
也可以用正则表达式
locate function 列出所有包含function的文件和目录,搜索包含关键字的所有文件和目录
locate命令不会对实际的整个硬盘进行查找,而是在文件的数据库里查找记录
对于刚创建不久的文件,因为他们还没被收录进文件数据库,因此locate命令就找不到其索引
Linux系统一般每天会更新一次文件数据库,也可以使用updatedb命令强制系统立即更新文件数据库
updatedb命令只能由root用户执行
find -->深入查找,可以对每个找到的文件做后续的操作 find 何处 何物 做什么 其中何物即查找什么是必须指定的
何处:如果没有给出何处,find命令会在当前目录及其子目录中查找
何物:也就是要查找什么,可以根据文件的名字来查找,也可以根据其大小来查找,也可以根据最近访问的时间来查找
做什么:找到要的文件后,可以对每个文件做一定的操作,称为“后续处理”,如果不指定这个参数,默认只显示找到的文件
与locate命令不同,find命令不会在文件数据库中查找文件的记录,而是遍历实际的硬盘;而且find只会查找完全符合何物的字符串表示的文件,而locate会查找所有包含关键字的文件
根据名字查找:find *syslog find *syslog* find / -name "*syslog*"
根据文件大小查找: find /var -size +10M 查找大于10MB的文件 find /var -size -20G 查找小于20G的文件
根据文件最近访问时间查找:find -name "*.txt" -atime -7 七天之内访问过的txt文件
可以用 -type参数来指定查找的文件类型 -type d:只查找目录类型 -type f:只查找文件类型
find命令的高级用法:操作查找到结果
find -name "*.jpg" 等价于 find -name "*.jpg" -print 格式化打印printf
删除查找到的文件: find -name "*.jpg" -delete
调用命令:-exec参数,后接命令 find one -name "*.txt" -exec chmod 600 {} \;
这个操作不必用双引号括起来,{}会用查找到的每个文件来替换,\;是必须的结尾
递归查找:find . -name "*.xml"
grep-->筛选数据
Globally search a Regular Expression and Print 在文件中查找关键字,并显示关键字所在的行
grep 要搜索的文本/字符串 要搜索的文件
默认情况下,grep命令是区分大小写的
-i:忽略大小写 grep -i path /etc/profile
-n:显示行号,显示搜索到的文本所在的行号 grep -n path /etc/profile
-v:只显示文本不在的行 grep -v path /etc/profile
-r:在所有子目录和子文件中查找 grep -r "Hello World" folder/
-E:使用正则表达式
grep -E ^path /etc/profile
grep -E [Pp]ath /etc/profile