- 实验步骤1 概述
文件搜索的常用命令有:which、whereis、find、locate。
- 实验步骤2 which
which指令会在环境变量$PATH设置的目录里查找符合条件的文件
语法:
which 文件
示例:$ which ls
/bin/ls
- 实验步骤3 whereis
该指令会在特定目录中查找符合条件的文件。这些文件应属于源文件、二进制文件,或是man文件。
语法:
whereis [-bfmsu][-B <目录>...][-M <目录>...][-S <目录>...] 文件
选项与参数:
-
-b 只查找二进制文件
-
-B<目录> 只在指定目录下查找二进制文件
-
-f 不显示文件名前的路径名称
-
-m 只查找man文件。
-
-M<目录> 只在指定目录下查找man文件
-
-s 只查找源代码文件
-
-S<目录> 只在指定目录下查找原始代码文件
-
-u 查找不包含指定类型的文件
示例:$ whereis -b passwd
passwd: /usr/bin/passwd /etc/passwd
- 实验步骤4 locate
locate命令用于查找符合条件的文档,他会去保存文档和目录名称的数据库内,查找符合查找条件的文档或目录
语法:
locate [-d ][--help][--version] 文件
选项与参数:
-
-d或--database= 用来指定locate指令使用的数据库。locate指令默认数据库位于/var/lib/slocate目录里,文档名为slocate.db。
-
--help 查看帮助
-
--version 显示版本信息
示例:$ locate longfile.txt
/home/jovyan/compress/dir/longfile.txt
/home/jovyan/compress/longfile.txt
/home/jovyan/dirandfile/longfile.txt
/home/jovyan/longfile.txt
/home/jovyan/text-grep/longfile.txt
/home/jovyan/text-sed/longfile.txt
/home/jovyan/text-vi/longfile.txt
- 实验步骤5 find
find命令用来在指定目录下查找文件。任何位于参数之前的字符串都将被视为欲查找的目录名。如果使用该命令时,不设置任何参数,则find命令将在当前目录下查找子目录与文件。并且将查找到的子目录和文件全部进行显示。
语法:
find 查找目录 [-option] 查找内容
选项与参数:
-
-print:列出结果,使用find命令,默认执行
-
-mtime n:文件修改时间,对文件数据的最近一次修改是在 n*24 小时之前
-
-mmin n:对文件数据的最近一次修改是在 n 分钟之前
-
-ctime n:文件状修改时间,对文件状态的最近一次修改是在 n*24 小时之前。
-
-cmin n:件状态修改,对文件状态的最近一次修改是在 n 分钟之前。
-
-atime n:访问时间,对文件的最近一次访问是在 n*24 小时之前。
-
-amin n:最后访问时间,对文件的最近一次访问是在 n 分钟之前。
-
-mtime : 指定时间曾被改动过的文件,意思是文件內容被更改过
-
-ctime : 指定时间曾被更改过的文件,意思是文件权限被更改过
-
-atime : 指定时间曾被存取过的文件,意思是文件被读取过
-
-newer file:file为已存在的文件,意为列出比file时间更新的文件
-
-type:指定文件类型
-
-uid n:指定文件属主uid
-
-gid n:指定文件属组gid
-
-user:指定文件属主名
-
-group :指定文件属组名
-
-nouser: 查找系统中没有属主的文件
-
-nogroup:查找系统中没有属组的文件
-
-name:查找文件名相匹配的文件
-
-size:查找匹配大小的文件
-
-exec COMMAND:查找后使用额外命令处理查找结果
-
-perm +mode | –mode:+为囊括所有元素,-为包含任一元素
示例:
#将目前目录及其子目录下文件名后缀是txt的文件列出来$ find . -name "*.txt"
./file.txt
./longfile.txt
./text-grep/file.txt
./text-grep/longfile.txt
............省略...........
#将当前目录及其子目录下所有目录列出$ find . -type d
.
./.ipython
./.ipython/extensions
./.ipython/profile_default
............省略...........
#查找当前目录下20分钟内被访问过的文件或目录:$ find . -amin -20
.
./.local/share/jupyter/nbsignatures.db
./user
./linux8.ipynb
#查找当前目录下大于10k的普通文件,并列出其详细信息$ find . -size +10k -type f
./.ipython/profile_default/history.sqlite
./privilege_1.png
./linux5_5.png
./linux5_2.png
............省略...........
新建文件夹search,将file.txt、file2.txt和longfile.txt复制其中,并新建文件夹adir、dir1和dir2和文件dir.txt,并复制longfile.txt分别到dir1和dir2中(20分)。在命令后添加"> 文件名"将内容输出到文件中。
任务一
使用which搜索"touch",输出结果到search_1.txt(20分)
任务二
搜索文件夹search中所有以"dir"开头的文件夹,输出结果到search_2.txt(30分)
任务三
搜索文件夹search中大于1k的普通文件类型文件,输出结果到search_3.txt(30分)