每天五个Linux命令-Day3

which, whereis, locate, find

一、which命令

1. 命令格式

which 可执行文件名称

2. 命令功能

which指令会在PATH变量指定的路径中,搜索某个系统命令的位置,并且返回第一个搜索结果。

二、whereis命令

1. 命令格式

whereis [-bmsu] [BMS 目录名 -f ] 文件名

2. 命令功能

whereis命令是定位可执行文件、源代码文件、帮助文件在文件系统中的位置。这些文件的属性应属于原始代码,二进制文件,或是帮助文件。whereis 程序还具有搜索源代码、指定备用搜索路径和搜索不寻常项的能力。

3. 命令参数

-b 定位可执行文件。

-m 定位帮助文件。

-s 定位源代码文件。

-u 搜索默认路径下除可执行文件、源代码文件、帮助文件以外的其它文件。

-B 指定搜索可执行文件的路径。

-M 指定搜索帮助文件的路径。

-S 指定搜索源代码文件的路径。

4. 常用范例

实例1:将和文件相关的文件都查找出来

命令:whereis svn

三、locate命令

1. 命令格式

locate [选择参数] [样式]

2. 命令功能

locate指令和find找寻档案的功能类似,但locate是透过update程序将硬盘中的所有档案和目录资料先建立一个索引数据库,在 执行loacte时直接找该索引,查询速度会较快。

3. 命令参数

-e 将排除在寻找的范围之外。

-f 将特定的档案系统排除在外,例如我们没有到理要把 proc 档案系统中的档案 放在资料库中。

-q 安静模式,不会显示任何错误讯息。

-n 至多显示 n个输出。

-r 使用正规运算式 做寻找的条件。

-o 指定资料库存的名称。

-d 指定资料库的路径

四、find命令

1. 命令格式

find pathname -options [-print -exec -ok …]

2. 命令功能

用于在文件树中查找文件,并作出相应的处理

3. 命令参数

pathname: find命令所查找的路径

-print: find命令将匹配的文件输出到标准输出

-exec: find命令对匹配的文件执行该参数所给出的shell命令。相应命令的形式为’command {} \;’

-ok: 和-exec的作用相同,执行命令前给出提示

4. 命令选项

-name: 按文件名查找

-perm: 按文件权限查找

-prune: 使find命令不在当前指定的目录中查找

-mtime -n +n 按照文件的更改时间来查找文件, - n表示文件更改时间距现在n天以内,+ n表示文件更改时间距现在n天以前

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

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

b - 块设备文件。

d - 目录。

c - 字符设备文件。

f - 普通文件。

另外,下面三个的区别:

-amin n 查找系统中最后N分钟访问的文件

-atime n 查找系统中最后n*24小时访问的文件

-cmin n 查找系统中最后N分钟被改变文件状态的文件

-ctime n 查找系统中最后n*24小时被改变文件状态的文件

-mmin n 查找系统中最后N分钟被改变文件数据的文件

-mtime n 查找系统中最后n*24小时被改变文件数据的文件

5. 常用范例

实例一:查找指定时间内修改过的文件

命令: find -atime -2

(查找48小时内修改的文件)

实例二:根据关键字查找

命令: find . -name log*

1
2
3
4
5
6
7
qjchen@ubuntu:~$ find . -name log*
./Desktop/shell_code/testdst/log2014.log
./Desktop/shell_code/testdst/log1.log
./Desktop/shell_code/testdst/log2.txt
./Desktop/shell_code/log
./.local/share/keyrings/login.keyring
./.cache/logrotate

实例三:按照目录或文件的权限来查找文件

命令: find . -perm 777

1
2
3
4
5
6
7
8
9
10
qjchen@ubuntu:~/Desktop/shell_code/testdst$ sudo chmod 777 *
qjchen@ubuntu:~/Desktop/shell_code/testdst$ ls -l
total 12
-rwxrwxrwx 1 qjchen qjchen 5 Dec 9 20:38 log1.log
-rwxrwxrwx 1 qjchen qjchen 100 Dec 9 20:42 log2014.log
-rwxrwxrwx 1 qjchen qjchen 5 Dec 9 20:38 log2.txt
qjchen@ubuntu:~/Desktop/shell_code/testdst$ find . -perm 777
./log2014.log
./log1.log
./log2.txt

实例四:按类型查找

命令: find . -type f -name log*

实例五:查找当前所有目录并排序

命令: find . -type d | sort

实例六:按大小查找文件

命令: find . -size +1000c -print