|
10 | 10 |
|
11 | 11 | # Linux 文件目录管理 |
12 | 12 |
|
13 | | -> 关键词:`cd`, `ls`, `pwd`, `mkdir`, `rmdir`, `tree`, `touch`, `ln`, `rename`, `stat`, `file`, `chmod`, `chown`, `cp`, `mv`, `rm` |
| 13 | +> 关键词:`cd`, `ls`, `pwd`, `mkdir`, `rmdir`, `tree`, `touch`, `ln`, `rename`, `stat`, `file`, `chmod`, `chown`, `locate`, `find`, `cp`, `mv`, `rm` |
14 | 14 |
|
15 | 15 | <!-- TOC depthFrom:2 depthTo:3 --> |
16 | 16 |
|
|
35 | 35 | - [file](#file) |
36 | 36 | - [chmod](#chmod) |
37 | 37 | - [chown](#chown) |
| 38 | + - [locate](#locate) |
| 39 | + - [find](#find) |
38 | 40 | - [cp](#cp) |
39 | 41 | - [mv](#mv) |
40 | 42 | - [rm](#rm) |
@@ -121,6 +123,10 @@ dr-xr-xr-x 4 root root 4096 Apr 19 2012 boot |
121 | 123 | - 探测文件类型 - 使用 [file](#file) |
122 | 124 | - 设置文件或目录的权限 - 使用 [chmod](#chmod) |
123 | 125 | - 设置文件或目录的拥有者或所属群组 - 使用 [chown](#chown) |
| 126 | +- 查找文件或目录 - 使用 [locate](#locate) |
| 127 | +- 在指定目录下查找文件 - 使用 [find](#find) |
| 128 | +- 查找命令的绝对路径 - 使用 [which](#which) |
| 129 | +- 查找命令的程序、源代码等相关文件 - 使用 [whereis](#whereis) |
124 | 130 |
|
125 | 131 | ### 文件和目录通用管理 |
126 | 132 |
|
@@ -357,6 +363,54 @@ chmod -R 755 /home/wwwroot/* |
357 | 363 | chown -R liu /usr/meng |
358 | 364 | ``` |
359 | 365 |
|
| 366 | +### locate |
| 367 | + |
| 368 | +> locate 命令和 slocate 命令都用来查找文件或目录。 |
| 369 | +> |
| 370 | +> locate 命令其实是 find -name 的另一种写法,但是要比后者快得多,原因在于它不搜索具体目录,而是搜索一个数据库/var/lib/locatedb,这个数据库中含有本地所有文件信息。Linux 系统自动创建这个数据库,并且每天自动更新一次,所以使用 locate 命令查不到最新变动过的文件。为了避免这种情况,可以在使用 locate 之前,先使用 updatedb 命令,手动更新数据库。 |
| 371 | +> |
| 372 | +> 参考:http://man.linuxde.net/locate_slocate |
| 373 | +
|
| 374 | +示例: |
| 375 | + |
| 376 | +```sh |
| 377 | +locate pwd # 查找和 pwd 相关的所有文件 |
| 378 | +locate /etc/sh # 搜索 etc 目录下所有以 sh 开头的文件 |
| 379 | +``` |
| 380 | + |
| 381 | +### find |
| 382 | + |
| 383 | +> find 命令用来在指定目录下查找文件。任何位于参数之前的字符串都将被视为欲查找的目录名。如果使用该命令时,不设置任何参数,则 find 命令将在当前目录下查找子目录与文件。并且将查找到的子目录和文件全部进行显示。 |
| 384 | +> |
| 385 | +> 参考:http://man.linuxde.net/find |
| 386 | +
|
| 387 | +```sh |
| 388 | +# 当前目录搜索所有文件,文件内容 包含 “140.206.111.111” 的内容 |
| 389 | +find . -type f -name "*" | xargs grep "140.206.111.111" |
| 390 | + |
| 391 | +# 列出当前目录及子目录下所有文件和文件夹 |
| 392 | +find . |
| 393 | + |
| 394 | +# 在 /home 目录下查找以 .txt 结尾的文件名 |
| 395 | +find /home -name "*.txt" |
| 396 | +# 同上,但忽略大小写 |
| 397 | +find /home -iname "*.txt" |
| 398 | + |
| 399 | +# 当前目录及子目录下查找所有以 .txt 和 .pdf 结尾的文件 |
| 400 | +find . -name "*.txt" -o -name "*.pdf" |
| 401 | + |
| 402 | +# 匹配文件路径或者文件 |
| 403 | +find /usr/ -path "*local*" |
| 404 | + |
| 405 | +# 基于正则表达式匹配文件路径 |
| 406 | +find . -regex ".*\(\.txt\|\.pdf\)$" |
| 407 | +# 同上,但忽略大小写 |
| 408 | +find . -iregex ".*\(\.txt\|\.pdf\)$" |
| 409 | + |
| 410 | +# 找出 /home 下不是以 .txt 结尾的文件 |
| 411 | +find /home ! -name "*.txt" |
| 412 | +``` |
| 413 | + |
360 | 414 | ### cp |
361 | 415 |
|
362 | 416 | > cp 命令用来将一个或多个源文件或者目录复制到指定的目的文件或目录。它可以将单个源文件复制成一个指定文件名的具体的文件或一个已经存在的目录下。cp 命令还支持同时复制多个文件,当一次复制多个文件时,目标文件参数必须是一个已经存在的目录,否则将出现错误。 |
|
0 commit comments