Linux 操作系统(二)搜索文件命令find、locate、which、whereis、grep、wc
以下命令均已在 Kali Linux 下验证。
1.find 命令
--1--
find /usr/share -name test.lst //精准搜索,文件名需要与-name后的内容一模一样包括后缀
--2--
find /usr/share -name "tes*" //通配符* 表示匹配所有
find /usr/share -name "test.???" //通配符? 表示匹配单个字符
--3--
find /usr/share -iname "test.lst" // -iname 参数,不区分文件名大小写
--4--
find /usr/share -size +1024 //按照文件大小查找; -size 参数 +n大于 -n小于 n等于; 1块=512k, 2048块=10M;
--5--
find /home -user root //按照所有者查找;
--6--
find /etc -mmin -30 //按时间属性查找,-amin访问时间
find /etc -cmin -30 //按时间属性查找,-cmi改变文件属性
find /etc -amin -30 //按时间属性查找,-amin改变文件内容
--7--
find /usr/share 条件1 -a 条件2 // -a 两个条件都需要满足
find /usr/share 条件1 -o 条件2 // -o 满足一个就可
如:
find /usr/share -name "test*" -a -type f //其中-type f文件 -type d 目录 -type l 软连接文件
--8--
find /usr/share -name "test.lst" -exec ls -l {} \; // -exec/-ok 把find命令的结果 用-exec/ok调用的命令2来处理;"{}"相当于占位符,作为find的查找结果。
注:
find 命令是直接在硬盘中进行搜索,如果指定的搜索范围过大,find命令就会消耗较大的系统资源,
导致服务器压力过大。所以,在使用 find 命令搜索时,尽量更精准的查找,这样消耗系统的资源少,
查找的速度快。命令所在路径:/bin/find.
示例:
--1-- root@hugboy:/home/hugboy# find /usr/share -name test.lst /usr/share/john/test.lst --2-- root@hugboy:/home/hugboy# find /usr/share -name tes* /usr/share/postgresql-common/testsuite /usr/share/automake-1.16/test-driver /usr/share/icons/Flat-Remix-Blue-Dark/apps/scalable/teslagrad.svg /usr/share/perl5/Mail/Mailer/testfile.pm /usr/share/perl5/Sys/Hostname/testall.pl /usr/share/sqlmap/lib/core/testing.py /usr/share/sqlmap/lib/techniques/union/test.py ... root@hugboy:/home/hugboy# find /usr/share -name test.??? /usr/share/john/test.lst /usr/share/wfuzz/wordlist/general/test.txt /usr/share/doc/node-normalize.css/examples/test.svg /usr/share/doc/p7zip/DOC/MANUAL/cmdline/commands/test.htm --3-- root@hugboy:/home/hugboy# find /usr/share -iname test.lst /usr/share/john/TesT.lst /usr/share/john/test.lst --4-- root@hugboy:/home/hugboy# find /usr/share -size +9999 /usr/share/exploitdb/files_exploits.csv /usr/share/sqlmap/data/txt/wordlist.tx_ /usr/share/proj/proj.db /usr/share/john/latin1.chr /usr/share/john/utf8.chr /usr/share/john/ascii.chr /usr/share/basemap/data/UScounties.shp /usr/share/basemap/data/shadedrelief.jpg ... --5-- root@hugboy:/home/hugboy# find -user hugboy . ./.bash_logout ./.Xauthority ./CTF/sm.txt ./.msf4 ./.msf4/plugins ./.msf4/logos ./.msf4/history ./.msf4/logs ./.msf4/logs/sessions ./.msf4/logs/scripts ./.msf4/logs/scripts/scraper ... --6-- root@hugboy:/home/hugboy# find /usr/share -amin -30 /usr/share /usr/share/mime/image/jpeg.xml /usr/share/mime/application/pdf.xml /usr/share/icons/Adwaita/cursors/col-resize /usr/share/icons/Adwaita/cursors/watch /usr/share/icons/Flat-Remix-Blue-Dark/apps/scalable/vulnhub.svg /usr/share/icons/Flat-Remix-Blue-Dark/apps/scalable/kali-web-application-trans.svg /usr/share/icons/Flat-Remix-Blue-Dark/apps/scalable/devhelp.svg /usr/share/icons/Flat-Remix-Blue-Dark/apps/scalable/accessories-text-editor.svg ... --7-- root@hugboy:/home/hugboy# find /usr/share -name test.lst -a -type f /usr/share/john/test.lst --8-- root@hugboy:/home/hugboy# find /usr/share -name test.lst -exec ls -l {} \; -rw-r--r-- 1 root root 85 4月 27 21:19 /usr/share/john/test.lst
2.locate 命令
--1--
locate test.lst //从数据库中搜索文件名
--2--
updatedb // 更新数据库
--3--
locate -i test.lst
注:
1) locate相比find速度更快,因为它是从已经建立好的数据库中搜索文件,消耗系统资源非常小。
2) 但是locate不会实时更新数据库,新建的文件会搜索不到,需要手动更新。(updatadb)
3) locate不收录临时目录tmp下的文件。
4) 命令所在路径:/usr/bin/locate.
示例:
root@hugboy:/usr# touch ilovelisa root@hugboy:/usr# locate ilovelisa root@hugboy:/usr# updatedb root@hugboy:/usr# locate ilovelisa /usr/ilovelisa
3.which 命令
--1--
which cp //列出命令cp所在路径,和命令的别名(如果存在的话)
注:
所在路径:/usr/bin/which.
示例:
root@hugboy:/usr# which find /usr/bin/find root@hugboy:/usr# which cp /usr/bin/cp root@hugboy:/usr#
4.whereis 命令
--1--
whereis cp //查找二进制命令,源文件和帮助文档的命令
注:
所在路径:/usr/bin/whereis.
示例:
root@hugboy:/usr# whereis cp cp: /usr/bin/cp /usr/share/man/man1/cp.1.gz
5.grep 命令
--1--
grep "this" test.lst //存在内容"test"的行
--2--
grep -i "this" test.lst //忽略大小写
--3--
grep -v "this" test.lst //反转查找,不存在内容"test"的行
--4--
grep "^string" test.lst //以string开头
grep "string$" test.lst //以string结尾
grep "^$" test.lst //空行
注:
所在路径:/bin/grep.
示例:
root@hugboy:/usr/share/john# cat test.lst This a test to proof linux order. and my love Godness is Lisa hahah... Just a Test. this all,Bye~ --1-- root@hugboy:/usr/share/john# grep "this" test.lst this all,Bye~ --2-- root@hugboy:/usr/share/john# grep -i "this" test.lst This a test to proof linux order. this all,Bye~ --3-- root@hugboy:/usr/share/john# grep -v "this" test.lst This a test to proof linux order. and my love Godness is Lisa hahah... Just a Test. --4-- root@hugboy:/usr/share/john# grep "...$" test.lst This a test to proof linux order. and my love Godness is Lisa hahah... Just a Test. this all,Bye~ root@hugboy:/usr/share/john# grep "^$" test.lst root@hugboy:/usr/share/john# grep -n "^$" test.lst 2:
6.wc 统计
--1--
wc -l test.lst // 行数
wc -w test.lst // 单词数
wc -c test.lst // 字节数
注:
命令所在路径:/usr/bin/wc.
示例:
root@hugboy:/usr/share/john# wc -l test.lst 5 test.lst root@hugboy:/usr/share/john# wc -w test.lst 19 test.lst root@hugboy:/usr/share/john# wc -c test.lst 99 test.lst root@hugboy:/usr/share/john#
7.参考文章
________________________________________________________
Every good deed you do will someday come back to you.
Love you,love word !