Linux命令笔记
Linux 文件系统
文件类型
Linux遵循"一切皆文件"的哲学,系统中有七种主要的文件类型,每种都有其特定的用途和标识符。
查看
ls -l七种类型
| 名称 | 标识 | 描述 | | 普通文件 | - | | | 目录文件 | d | | | 字符设备 | c | 串行端口设备,例如键盘鼠标 | | 块设备 | b | 存储设备接口,例如硬盘/dev/sda1 | | 套接字 | s | socket 网络链接 | | 管道 | p | 管道文件,常用于进程间通信 | | 链接 | l | |
管道
Linux 进程间通信: https://cloud.tencent.com/developer/article/1005566
有两类:
匿名管道与命名管道
这两种管道也叫做有名或无名管道。匿名管道最常见的形态就是我们在shell操作中最常用的"|"。
它的特点是只能在父子进程中使用,父进程在产生子进程前必须打开一个管道文件,然后fork产生子进程,这样子进程通过拷贝父进程的进程地址空间获得同一个管道文件的描述符,以达到使用同一个管道通信的目的。
此时除了父子进程外,没人知道这个管道文件的描述符,所以通过这个管道中的信息无法传递给其他进程。这保证了传输数据的安全性,当然也降低了管道了通用性,于是系统还提供了命名管道。
命名管道的创建mkfifo或mknod
管道的读会阻塞,一般写不会阻塞
文件系统标准
Linux目录结构
https://www.cnblogs.com/huchong/p/9984660.html
File hierarchy standard,目前最新是3.0,由Linux基金会修订
https://refspecs.linuxfoundation.org/FHS_3.0/fhs/index.html
中文翻译
https://www.itread01.com/content/1545290942.html
Linux 命令
模板
分类
命令
命令格式
命令功能
常用选项参数
| 选项 | 描述 | | | |
常见范例
基础命令
man命令
Linux命令从哪开始学?man! man命令可阅读Linux下命令行工具的文档,速查命令再也不用找谷歌了
参考链接:
命令格式
Usage: man [OPTION...] [SECTION] PAGE...
Main modes of operation:
-f, --whatis 与 whatis 相同 ,查询一个命令执行什么功能
-k, --apropos 与 apropos 相同,关键字查找、定位手册页的名字和描述
-K, --global-apropos 全局搜索
-l, --local-file 打开文档文件
-w, --where, --path, --location
打印 man page(s) 文件位置
Finding manual pages:
-L, --locale=LOCALE 指定语言
-m, --systems=SYSTEM use manual pages from other systems
-M, --manpath=PATH set search path for manual pages to PATH
-S, -s, --sections=LIST use colon separated section list
-e, --extension=EXTENSION limit search to extension type EXTENSION
-i, --ignore-case 忽略大小写 (default)
-I, --match-case 大小写敏感
--regex 展示正则匹配的所有页面
--wildcard show all pages matching wildcard
--names-only make --regex and --wildcard 仅匹配页面标题,不匹配名称
-a, --all 查找所有匹配的页面
-u, --update 强制更新缓存
--no-subpages don't try subpages, e.g. 'man foo bar' => 'man
foo-bar'命令功能
man 手册章节的section分类:
要准确找到一份man文档,需要找到 文档名+section。通常可用 man -w 命令 查询
| 代码 | 功能 | | 1 | 标准用户命令(Executable programs or shell commands) | | 2 | 系统调用(System calls)functions provided by the kernel | | 3 | 库调用(Library call)functions within program libraries | | 4 | 特殊文件(设备文件)的访问入口(/dev)Special files (usually found in /dev) | | 5 | 文件格式(配置文件的语法),指定程序的运行特性 File formats and conventions | | 6 | 游戏(Games) | | 7 | 杂项(Miscellaneous)including macro packages and conventions | | 8 | 管理命令 System administration commands | | 9 | 跟kernel有关的文件 Kernel routines |
man手册文本的格式:
| 章节 | 解释 | | NAME | 命令名称及功能简要说明 | | SYNOPSIS | 用法说明,包括可用的选项 | | DESCRIPTION | 命令功能的详细说明,可能包括每一个选项的意义 | | OPTIONS | 说明每一项的意义 | | FILES | 此命令相关的配置文件 | | BUGS | BUGS | | EXAMPLES | 使用示例 | | SEE ALSO | 参考内容 |
SYNOPSIS 语法格式简介,一般为EBNF格式
- [-abc] :表示中括号内任一一个 option 都是可选的。
- -a|-b:竖线分隔的 option 不可同时出现
- ... :表示可重复的
- {choice1,choice2,choice3} 表示可选内容
- <>:表示必选
示例,pwd命令的手册。非常简单
NAME
pwd - print name of current/working directory
SYNOPSIS
pwd [OPTION]...
DESCRIPTION
Print the full filename of the current working directory.
-L, --logical
use PWD from environment, even if it contains symlinks
-P, --physical
avoid all symlinks
--help display this help and exit
--version
output version information and exit
NOTE: your shell may have its own version of pwd, which usually supersedes the version described here. Please refer to your shell's documentation for details about the
options it supports.
GNU coreutils online help: <http://www.gnu.org/software/coreutils/> Report pwd translation bugs to <http://translationproject.org/team/>
AUTHOR
COPYRIGHT
SEE ALSOman文档默认存储位置:
- 压缩的文档:/usr/share/man
- 文本文档:/usr/local/man/
常用选项参数
| 参数 | 描述 | | -w | 定位文档文件的位置 | | -l | 打开指定的文档文件 | | -k | 模糊查询一个命令,可使用正则表达式 | | -f | 与 whatis 相同 ,查询一个命令有什么功能 | | -K | 全局文本搜索 | | -L | 指定语言 |
常见范例
查询某个命令的手册。例如查询man命令自己的文档
➜ ~ man man打开man的中文文档
➜ ~ man -L zh_CN man MAN(1) 手册分页显示工具 MAN(1) 名称 man - 在线参考手册的接口通过描述模糊查询一个命令,支持正则表达式
➜ ~ man -k "a programmer's.*?editor" ex (1) - Vi IMproved, a programmer's text editor rview (1) - Vi IMproved, a programmer's text editor rvim (1) - Vi IMproved, a programmer's text editor vi (1) - Vi IMproved, a programmer's text editor view (1) - Vi IMproved, a programmer's text editor vim (1) - Vi IMproved, a programmer's text editor查找文档的位置
➜ ~ man -w bash /usr/share/man/man1/bash.1.gz查询命令描述
➜ ~ man -f read read (2) - read from a file descriptor
目录文件命令
ls 命令
命令格式
ls [OPTION]... [FILE]...
命令功能
列出目录的文件信息(默认是当前目录)。默认按字母排序。
常用选项参数
| 参数 | 描述 | | -a | 不忽略 "."开头的文件(显示隐藏文件) | | -A | 类似-a,但是忽略"."(当前目录)和".."(父目录) | | -l | 显示文件权限、硬链接个数、useruser、所属的group、文件或目录的大小、修改时间、名 | | --block-size= | 文件大小的格式 K = Kilobyte 、 M = Megabyte 、G = Gigabyte | | -h | 文件大小显示可读的格式 | | -f | 不排序 | | -F | 文件分类 (one of */=>@) | | --format= | 格式化 | | -g | -l 不显示owner | | -G | -l 不显示group | | -i | 打印index number (inode) | | -X | 根据扩展名排序 | | -S | 根据文件大小排序 | | -r | 反顺序 | | -t | 按时间排序 | | -R | recursive:显示所有文件 | | -p | 目录显示/ | | -d | 列出目录 |
-l 输出解释:
drwxr-xr-x 2 root root 4096 Jun 18 17:37 auto_upload
drwxr-xr-x 8 plex plex 4096 Jun 27 2018 blog
drwxr-xr-x 2 plex plex 4096 Feb 10 2018 BLOG_PHOTO| 文件权限 | 硬链接个数 | user | user所属的group | 文件或目录的大小 | 修改时间 | 名 | | drwxr-xr-x | 2 | root | root | 4096 | Jun 27 2018 | auto_upload |
drwxr-xr-x 解释:
第1位是文件类型
| 文件类型标识 | 文件类型 | | - | 普通文件 | | d | 目录 | | l | 符号链接 | | s(伪文件) | 套接字 | | b(伪文件) | 块设备 | | c(伪文件) | 字符设备 | | p(伪文件) | 管道 |
余下9位分别代表User、Group、及Other的权限
权限位解释:rwx (r读4、w写2、x运行1、-无)
常见范例
列出文件夹下所有文件
ls -lR仅列出目录
ls -d */文件搜索
ls -lR hello*根据时间排序
ls -ltcd 命令
cd 命令是shell 的内置命令,可用man builtins查询。这里的用法是zsh的shell
命令格式
cd [-L|[-P [-e]] [-@]] [dir]
命令功能
常用选项参数
环境变量 CDPATH,在该变量下的文件夹都可以随意cd进去。如果不想进入该变量的文件夹,用/开头
常见范例
主目录
cd ~上一个目录
cd -cd到真正目录而不是软目录
cd -P [symbolic link-name]ln 命令
ln命令用于文件链接
命令格式
ln [OPTION]... [-T] TARGET LINK_NAME
ln [OPTION]... TARGET
ln [OPTION]... TARGET... DIRECTORY
ln [OPTION]... -t DIRECTORY TARGET...命令功能
先了解文件系统链接的概念
| 名称 | 描述 | 跨文件系统 | 链接不存在的文件 | 链接目录 | 使用场景 | | 软连接 symbolic link | 软链接,以路径的形式存在。类似于Windows操作系统中的快捷方式。软链接可以 ,硬链接不可以。 软链接可以对一个不存在的文件名进行链接。软链接可以对目录进行链接。 | ✔ | ✔ | ✔ | 使用场景:
1.在文件系统中多处共享同一个较大文件时,使用软链接就可以避免创建多个副本。
2.维护动态库文件的版本时,使用软链接,在升级库文件后,只需修改软链接的源文件,而使用该库的程序则不需要修改。 | | 硬链接 hardlink | 硬链接,以文件副本的形式存在。但不占用实际空间。 不允许给目录创建硬链接 。硬链接只有在同一个文件系统中才能创建。像一个指针,不分配inode。 | X | X | X | |
常用选项参数
| 选项 | 描述 | | -b | 删除,覆盖以前建立的链接 | | -d | 允许超级用户制作目录的硬链接 | | -f | 强制执行 | | -i | 交互模式,文件存在则提示用户是否覆盖 | | -n | 把符号链接视为一般目录 | | -s | 软链接(符号链接) | | -v | 显示详细的处理过程 |
常见范例
硬链接
制作某文件的硬链接,可以看到,硬链接文件的属性与原文件一致
➜ ~ ln aria.sh aria1.sh
-rwxr-xr-x 2 plex plex 437 Feb 4 2020 aria1.sh
-rwxr-xr-x 2 plex plex 437 Feb 4 2020 aria.sh而且,硬链接文件并不会随原文件被删除而消失
➜ ~ rm aria.sh
➜ ~ cat aria1.sh
aria2c --enable-rpc \
--rpc-listen-all \
--rpc-allow-origin-all \
--dir ./files \软链接
软链接的属性不一样
➜ ~ ln -s aria.sh aria-link.sh
➜ ~ ll
total 140K
lrwxrwxrwx 1 root root 7 Nov 2 09:50 aria-link.sh -> aria.sh
-rwxr-xr-x 1 plex plex 437 Feb 4 2020 aria.sh而且软链接在原文件被删除后就会失效
➜ ~ rm aria.sh
➜ ~ ll
total 140K
-rwxr-xr-x 1 root root 437 Nov 2 09:51 aria.bak.sh
lrwxrwxrwx 1 root root 7 Nov 2 09:50 aria-link.sh -> aria.sh
drwxr-xr-x 2 root root 4.0K Jun 18 17:37 auto_upload
➜ ~ cat aria-link.sh
cat: aria-link.sh: No such file or directorypwd 命令
命令格式
pwd [OPTION]...命令功能
打印当前工作目录,全目录
常用选项参数
| 选项 | 描述 | | -L | Logical:使用环境的PWD,包含符号链接 | | -P | Physical:避开所有符号链接 |
常见范例
创建temp目录与符号链接
➜ /tmp mkdir temp
➜ /tmp ln -s temp temp2
drwxr-xr-x 2 root root 4.0K Nov 4 09:20 temp
lrwxrwxrwx 1 root root 4 Nov 4 09:20 temp2 -> temp添加-L或-P选项,默认显示符号链接的目录。
添加-P 显示真实的路径
root@vistazx1:/tmp/temp2# pwd -L
/tmp/temp2
root@vistazx1:/tmp/temp2# pwd -P
/tmp/tempmkdir命令
命令格式
mkdir [OPTION]... DIRECTORY...命令功能
创建目录,支持创建父目录,支持指定文件权限,支持SELinux
常用选项参数
| 选项 | 描述 | | -m | 设置文件模式,同chmod | | -p | 创建父目录,如果存在则不创建 |
常见范例
创建目录,包含父目录
mkdir -p user/root/desktop指定目录文件模式
User、Group、及Other的权限
权限位解释:rwx (r读4、w写2、x运行1、-无)
➜ temp mkdir -m 777 dir1
➜ temp mkdir -m 600 dir2
➜ temp ll
total 8.0K
drwxrwxrwx 2 root root 4.0K Nov 4 09:36 dir1rm 命令
命令格式
rm [OPTION]... [FILE]..命令功能
删除文件或目录。支持删除整个目录、强制删除、交互模式。注意被删除的文件通过一定的技术手段有可能还原,要更安全地删除文件,使用shred。
常用选项参数
| 选项 | 描述 | | -f | 不提示,忽略不存在的文件。强制删除 | | -i | 每个文件删除前提醒 | | -I | 删除前提醒一次,侵入性较弱 | | --one-file-system | 仅删除在同一文件系统的文件 | | --no-preserve-root | 不区别对待"/" | | --preserve-root[=all] | | | -d | 删除空目录 | | -r | 删除整个目录 |
常见范例
切勿执行
rm -rf /mv命令
命令格式
SYNOPSIS
mv [OPTION]... [-T] SOURCE DEST
mv [OPTION]... SOURCE... DIRECTORY
mv [OPTION]... -t DIRECTORY SOURCE...命令功能
文件移动,覆盖,备份
常用选项参数
| 选项 | 描述 | | -b | 如果目标文件已存在,则创建备份 | | --backup=[control] | 备份,接收选项
none, off
never make backups (even if --backup is given)
numbered, t
make numbered backups
existing, nil
numbered if numbered backups exist, simple otherwise
simple, never
always make simple backups | | -f | 覆盖前不提醒 | | -i | 覆盖前提醒 | | -n | 不要覆盖文件 | | -u | 如果源文件更新或目标文件不存在的时候移动 (增量更新) |
常见范例
文件移动
mv hello hi支持备份,创建了后缀为~的备份文件
➜ /tmp mv -b hello hi
➜ /tmp ll
total 36K
-rw-r--r-- 1 root root 0 Nov 5 09:46 hi
-rw-r--r-- 1 root root 9 Nov 5 09:46 hi~cp命令
命令格式
cp [OPTION]... [-T] SOURCE DEST
cp [OPTION]... SOURCE... DIRECTORY
cp [OPTION]... -t DIRECTORY SOURCE...
命令功能
复制文件与文件夹
支持选择文件参数
常用选项参数
| 选项 | 描述 | | -a | 此选项通常在复制目录时使用,它保留链接、文件属性,并复制目录下的所有内容。效果相当于 -dR --preserve=all | | -b | 备份已存在的文件 | | -d | 复制时保留链接 | | -f | 强制。如果目标文件无法打开,则删除再重试 | | -i | 提醒覆盖 | | -n | 不要覆盖 | | -p | --preserve ,除复制文件的内容外,还保留源文件或目录的属性,包括所有者、所属组、权限与修改时间也复制到新文件中。 | | -P | --parents ,保留源文件或目录的路径,此路径可以是绝对路径或相对路径,且目的目录必须已经存在 | | -r 和-R | 若给出的源文件是一个目录文件,此时将复制该目录下所有的子目录和文件。 | | -x | 仅在此文件系统 | | -u | 增量。当源文件更新或目标文件不存在时复制 | | -s | 不复制,只创建符号链接 | | -l | 不复制,只创建硬链接 |
常见范例
复制
➜ /tmp cp -r source target
➜ /tmp ll source
total 1.4M
-rw-r--r-- 1 root root 137 Jun 30 10:12 ca.txt
-rw-r--r-- 1 root root 120 Jun 30 10:12 server.txt
drwxr-xr-x 3 1001 1001 4.0K Jun 30 10:12 trojan
-rw-r--r-- 1 root root 1.4M Jan 17 2019 trojan.xz
➜ /tmp ll target
total 1.4M
-rw-r--r-- 1 root root 137 Nov 9 15:23 ca.txt
-rw-r--r-- 1 root root 120 Nov 9 15:23 server.txt
drwxr-xr-x 3 root root 4.0K Nov 9 15:23 trojan
-rw-r--r-- 1 root root 1.4M Nov 9 15:23 trojan.xz添加-a选项后,时间等属性都被复制过来了
➜ /tmp cp -r -a source target
➜ /tmp ll target
total 1.4M
-rw-r--r-- 1 root root 137 Nov 9 15:23 ca.txt
-rw-r--r-- 1 root root 120 Nov 9 15:23 server.txt
drwxr-xr-x 3 root root 4.0K Nov 9 15:23 trojan
-rw-r--r-- 1 root root 1.4M Nov 9 15:23 trojan.xztouch命令
命令格式
touch [OPTION]... FILE..命令功能
修改文件的访问时间和修改时间
- 当文件不存在时会创建新文件
常用选项参数
| 选项 | 描述 | | -c | 不要创建新文件 | | -t | 传入时间戳 | | -d | --date=STRING,使用指定的时间 | | -h | 修改符号链接的时间,而不是链接文件的时间 | | -a | 仅修改访问时间 | | -m | 仅变化修改时间 |
常见范例
修改访问时间
➜ temp stat file1
File: file1
Size: 0 Blocks: 0 IO Block: 4096 regular empty file
Device: 802h/2050d Inode: 122791 Links: 1
Access: (0644/-rw-r--r--) Uid: ( 0/ root) Gid: ( 0/ root)
Access: 2020-11-10 09:15:04.769531724 +0800
Modify: 2020-11-10 09:15:04.769531724 +0800
Change: 2020-11-10 09:15:04.769531724 +0800
Birth: -
➜ temp touch -a file1
➜ temp stat file1
File: file1
Size: 0 Blocks: 0 IO Block: 4096 regular empty file
Device: 802h/2050d Inode: 122791 Links: 1
Access: (0644/-rw-r--r--) Uid: ( 0/ root) Gid: ( 0/ root)
Access: 2020-11-10 09:16:52.826117263 +0800
Modify: 2020-11-10 09:15:04.769531724 +0800
Change: 2020-11-10 09:16:52.826117263 +0800
Birth: -修改修改时间
➜ temp touch -m file1
➜ temp stat file1
File: file1
Size: 0 Blocks: 0 IO Block: 4096 regular empty file
Device: 802h/2050d Inode: 122791 Links: 1
Access: (0644/-rw-r--r--) Uid: ( 0/ root) Gid: ( 0/ root)
Access: 2020-11-10 09:16:52.826117263 +0800
Modify: 2020-11-10 09:17:29.474315829 +0800
Change: 2020-11-10 09:17:29.474315829 +0800cat命令
命令格式
cat [OPTION]... [FILE]...命令功能
将文件串联,打印到终端
常用选项参数
| 选项 | 描述 | | -v | 展示非可读字符 | | -E | $ 行结尾 | | -T | ^I展示TAB | | -A | 等价于-vET | | -b | 给非空行加上编号 | | -n | 编号所有行 |
常见范例
➜ temp cat file1 -b
1 Hello, my friend
2 Let's code➜ temp cat file1 -A
Hello, my friend$
Let's code$less 命令
命令格式
SYNOPSIS
less -?
less --help
less -V
less --version
less [-[+]aABcCdeEfFgGiIJKLmMnNqQrRsSuUVwWX~]
[-b space] [-h lines] [-j line] [-k keyfile]
[-{oO} logfile] [-p pattern] [-P prompt] [-t tag]
[-T tagsfile] [-x tab,...] [-y lines] [-[z] lines]
[-# shift] [+[+]cmd] [--] [filename]...
(See the OPTIONS section for alternate option syntax with long option names.)命令功能
less像more,但是有更多功能。命名是more和vi的结合。less不需要读取整个文件,所以大文件打开速度更快。
常用选项参数
| 选项 | 描述 | | h | 帮助 | | page up / page down | 向上/下翻页 | | g开头,G结尾 | 跳到开头、结尾 | | / | 向前搜索 | | ? | 向后搜索 | | F | 跟踪当前文件的新增,功能如同tail | | v | 在编辑器中打开该文件 |
个人觉得文本编辑器只需要学会一个就行了。vim基本能覆盖less的功能。
head命令
命令格式
head [OPTION]... [FILE]...命令功能
输出文件的前一部分
常用选项参数
| 选项 | 描述 | | -c, --bytes=[-]NUM | 打印文件的前一部分,指定读取的大小,如果带-则不打印最后一部分 | | -n, --lines=[-]NUM | 打印文件的前几行,如果带-则不打印最后的几行 |
NUM may have a multiplier suffix: b 512, kB 1000, K 1024, MB 10001000, M 10241024, GB 100010001000, G 102410241024, and so on for T, P, E, Z, Y.
常见范例
- Output the first few lines of a file:
head -n {{count_of_lines}} {{filename}}
- Output the first few bytes of a file:
head -c {{size_in_bytes}} {{filename}}
- Output everything but the last few lines of a file:
head -n -{{count_of_lines}} {{filename}}
- Output everything but the last few bytes of a file:
head -c -{{size_in_bytes}} {{filename}}tail 命令
命令格式
tail [OPTION]... [FILE]...命令功能
打印文件的最后一部分
常用选项参数
| 选项 | 描述 | | -c, --bytes=[+]NUM | 打印文件的最后NUM bytes, 添加+则跳过前NUM byte | | -n, --lines=[+]NUM | 打印文件的最后几行,添加+跳过前几行 | | --pid=PID | 配合-f使用,在进程PID结束后退出 | | -f | 输出添加的内容 | | -F | 同-f,重试,文件无法访问时会不断重试 | | -s | 配合-f使用,睡眠一段时间。配合-pid可以实现每隔几秒检查一次线程 |
常见范例
打印文件尾部,同时每一秒检查进程是否在运行,若进程不在执行,则退出
tail -s 1 -f --pid 4921 xxx.log文件查找相关命令
which命令
命令格式
which - locate a command命令功能
返回当前环境可执行命令的目录名或链接
常用选项参数
| 选项 | 描述 | | -a | 打印所有匹配到的目录名 |
常见范例
➜ ~ which top
/usr/bin/topwhereis命令
命令格式
whereis [options] [-BMS directory... -f] name...命令功能
查找命令对应的手册、二进制、源码
常用选项参数
| 选项 | 描述 | | -b | 搜索二进制 | | -m | 搜索手册 | | -s | 搜索源码 | | -B | 指定二进制的搜索路径 | | -M | 指定手册的搜索路径 | | -S | 指定源码的搜索路径 | | -l | 列出所有搜索路径 |
常见范例
查找ssh命令的二进制、手册、源码
➜ ~ whereis ssh
ssh: /usr/bin/ssh /etc/ssh /usr/share/man/man1/ssh.1.gz查找不正常的二进制 (少于一或多于一个二进制的命令):
➜ ~ whereis -u *
dmesg: /bin/dmesg /usr/share/man/man1/dmesg.1.gz在/usr/bin下查找gcc
➜ ~ whereis -b -B /usr/bin -f gcc
gcc: /usr/bin/gccfind命令
命令格式
find [-H] [-L] [-P] [-D debugopts] [-Olevel] [starting-point...] [expression]命令功能
在目录中搜索文件
常用选项参数
| 选项 | 描述 | | -name, -iname | 文件名,支持pattern,iname大小写不敏感 | | -path | 目录 | | -type | 文件类型,详情见文档 | | -size | 文件大小 | | -exec | 执行命令 | | -mtime | 修改时间 | | -or, -not | | | -delete | 删除文件(不要轻易使用) |
常见范例
在目录下查找扩展名为log的文件
➜ ~ find . -name "*.log"
./v2rayUpdate.log
./dmesg.log
./frp/frps.2020-03-13.log支持多种匹配方式
➜ ~ find . -name "*.log" -or -name "*.db"
./v2rayUpdate.log
./IAD_Pages/ch4/images/Thumbs.db
./IAD_Pages/ch5/images/travel/tiny/Thumbs.db查找目录(type d),大小写不敏感
➜ ~ find . -type d -iname .config
./.oh-my-zsh/plugins/zsh-navigation-tools/.config
./.config查找符合某模式的目录:
➜ ~ find . -path '**/art/**'
./IAD_Pages/ch5/images/art/tiny
./IAD_Pages/ch5/images/art/tiny/116010.jpg查找文件,排除目录
➜ ~ find . -name "*.db" -not -path "**/art/**"
./IAD_Pages/ch4/images/Thumbs.db
./IAD_Pages/ch5/images/travel/tiny/Thumbs.db查找符合大小范围的文件
➜ ~ find . -size '+500k' -size '-10M'
./IAD_Pages/ch2&ch3/images/related-large1.jpg
./IAD_Pages/ch2&ch3/images/large-central-park.jpg
./IAD_Pages/ch2&ch3/images/related-large3.jpg查找文件并执行命令
➜ ~ find . -name "*.log" -exec wc -l {} \;
0 ./v2rayUpdate.log
895 ./dmesg.log
0 ./frp/frps.2020-03-13.log
0 ./frp/frps.2020-03-14.log
0 ./frp/frps.log
2 ./virt-sysprep-firstboot.log
15 ./files/_gsdata_/2020-0421-154918-DESKTOP-F40K3GF-BWH_SSH.log
5 ./files/_gsdata_/2020-0422-123447-DESKTOP-F40K3GF-BWH_SSH.log
4 ./files/_gsdata_/2020-0424-161203-DESKTOP-F40K3GF-BWH_SSH.log