find就不用多说了,就是递归遍历文件夹。具体可以参看:https://blog.csdn.net/icebergliu1234/article/details/104584827
which:有时候可能在多个路径下存在相同的命令,该命令可用于查找当前所执行的命令到底是哪一个位置处的命令。
比如你安装了mysql,由于某种原因没有设置环境变量,那么
运行:which mysql
就会报错:/usr/bin/which: no mysql in (/usr/lib64/qt-3.3/bin:/usr/local/sbin:/usr/local/bin:/sbin:/bin:/usr/sbin:/usr/bin:/root/bin)
解决方法就是插入环境变量,
export PATH=$PATH:/usr/local/mysql//bin
source /etc/profile
再比如:
which -a which #查看命令which所在位置,-a参数表示找出所有
whereis:是在数据库中查找文件,在数据库(var/lib/slocate/slocate.db)中查找与文件名相匹配的二进 制文件、源文件和帮助手册文件,使用之前可以使用updatedb命令手动更新数据库。
假设你想找,whereis
命令自己所在位置。下面是你具体的操作:
whereis whereis
需要注意的是,输出的第一个路径才是你想要的结果。使用 whereis
命令,同时也会显示帮助页面和源码所在路径。所以你在输出中看见的第二个路径就是帮助页面文件所在位置。
那么如果只想找到二进制文件呢?
可以使用 -b
这一命令行选项。例如:
whereis -b cp
/usr/bin
寻找二进制文件,你可以用 -B
这一选项来实现。
whereis -B /usr/bin/ -f cp
注意:使用这种方式时可以给出多个路径。使用 -f
这一选项来明确分隔目录列表和要搜索的文件名。
locate:与whereis一样的地方是,也是在数据库中进行查找,也可以更新数据库(手动执行updatedb命令),locate通常该系统数据库每天更新一次(可以查看系统的/etc/cron.daily/mlocate,不同系统可能不一样)。
不同的地方是其查询文件类型是所有类型,并且使用的是模糊查询,也就是locate会给出所有与*filename*相匹配的文件的路径。
具体参见:https://blog.csdn.net/icebergliu1234/article/details/104585299
几个使用例子:
1 快速查找文件
locate locate.txt #查找locate.txt /home/hyb/workspaces/shell/locate/locate.txt
2 查找存在的文件
locate locate.txt #查找之前删除locate.txt #虽然文件不存在,但是仍然被查找出来 /home/hyb/workspaces/shell/locate/locate.txt locate -e locate.txt #-e参数可以查找只存在的文件 (由于该文件不存在,因此也不会被查找出来)
3 查找计算文件的数量
locate -c locate.log #只计算查找到的数量 1
4 忽略大小写查找
locate -i locate.zip /home/hyb/workspaces/shell/locate/LOCATE.zip
5 使用正则表达式
普通的查找是模糊匹配的,因此只要目标名称中包含要搜索的名称,都会被搜索出来,但是我们可以利用正则表达式,来精确查找。
locate -r /locate.log$ #查找以/locate.log结尾的文件
参考:https://blog.csdn.net/u010625000/article/details/44455023