From a98c4f79546ce07386e1407e252666b922cca10e Mon Sep 17 00:00:00 2001 From: Your Name Date: Wed, 22 May 2024 23:09:52 +0800 Subject: [PATCH 1/6] =?UTF-8?q?=E7=AC=94=E8=AE=B0?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- ...07\344\273\266\347\256\241\347\220\206.md" | 73 +++++++++++++++++++ 1 file changed, 73 insertions(+) create mode 100644 "\350\216\253\346\265\267\345\251\214/20240522\346\226\207\344\273\266\345\217\212\346\226\207\344\273\266\347\256\241\347\220\206.md" diff --git "a/\350\216\253\346\265\267\345\251\214/20240522\346\226\207\344\273\266\345\217\212\346\226\207\344\273\266\347\256\241\347\220\206.md" "b/\350\216\253\346\265\267\345\251\214/20240522\346\226\207\344\273\266\345\217\212\346\226\207\344\273\266\347\256\241\347\220\206.md" new file mode 100644 index 0000000..e1de6db --- /dev/null +++ "b/\350\216\253\346\265\267\345\251\214/20240522\346\226\207\344\273\266\345\217\212\346\226\207\344\273\266\347\256\241\347\220\206.md" @@ -0,0 +1,73 @@ +## 文件及文件管理 + +### 1、ls:列出目录下的文件和内容 + +​ 1、-l (long format):以长格式显示文件和目录的详细信息,包括权限、链 接数、所有者、所属组、大小、最后修改日期和时间以及文件名。 + +​ 2、-a (all):显示包括以点(`.`)开头的隐藏文件在内的所有文件和目录。 + +​ 3、-h (human-readable):与 `-l` 结合使用时,以易读的格式(如 KB, MB)显示文件大小。 + +​ 4、-R (recursive):递归列出目录内容,显示指定目录及其所有子目录的 文件和目录。 + +​ 5、-t (time):按修改时间排序显示文件和目录,最新的排在前面。 + +​ 6、-S*(size):按文件大小排序,大的文件排在前面,默认是降序。 + +​ 7、-r (reverse):反转排序顺序,通常与其他排序选项(如 `-t` 或 `-S`)一 起使用。 + +​ 8、-d (directory):当指定的项是目录时,仅显示目录名称本身,而不是其 内容。 + +​ 9、-X:按扩展名排序。 + +### 2、cd + +​ 1、进入某个目录:cd 目录名 + +​ 2、返回上一级目录:cd .. + +​ 3、返回家目录:cd ~ 或者cd + +​ 4、返回上一次所在目录:cd - + +### 3、pwd + +​ 1、pwd 显示当前目录所在路径 + +​ 2、dir1=$(pwd) + +​ echo $dir1 + +​ 将当前工作目录路径保存到变量中 + +### 4、mkdir + +​ 1、-p:递归创建目录,如果没有指定的上级目录,会一并创建。 + +​ 2、-m :设置新创建目录的权限。MODE是一个八进制数,用于指定目录 的权限位。 + +​ 3、-v:在创建每个目录时显示信息,这有助于确认哪些目录被成功创建。 + +​ 4、mkdir /tmp/新目录 :创建临时文件 + +### 5、rmkdir 目录名:只能删除空目录 + +### 6、rm + +​ 1、-f:强制删除文件或目录,不提示确认,即使文件设为只读也会删除, 且不显示不存在文件的错误信息。 + +​ 2、-i:在删除每一个文件或目录前提示用户确认,以避免误删。 + +​ 3、-r, -R:递归删除目录及其包含的所有内容,适用于删除非空目录。 + +​ 4、-v:显示正在删除的文件或目录的信息,提供详细的删除过程反馈。 + +​ 5、-f a*:删除所有以a开头的文件 + +​ 6、-f .*:删除隐藏文件 + +​ 7、-rf:递归地强制删除 + +​ 8、rm -d 目录名:只删除空目录 + +​ 9、rm -f a.txt b.txt:同时删除多个文件 \ No newline at end of file -- Gitee From 80415f55e7380367d519a23f58e1dfb71b46cfaf Mon Sep 17 00:00:00 2001 From: Your Name Date: Fri, 24 May 2024 21:54:06 +0800 Subject: [PATCH 2/6] =?UTF-8?q?=E7=AC=94=E8=AE=B0?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../20240523cp\345\222\214mv.md" | 55 ++++++ .../20240518\344\275\234\344\270\232.md" | 0 .../20240523 \344\275\234\344\270\232.md" | 180 ++++++++++++++++++ 3 files changed, 235 insertions(+) create mode 100644 "\350\216\253\346\265\267\345\251\214/20240523cp\345\222\214mv.md" rename "\350\216\253\346\265\267\345\251\214/20240518\344\275\234\344\270\232.md" => "\350\216\253\346\265\267\345\251\214/\344\275\234\344\270\232/20240518\344\275\234\344\270\232.md" (100%) create mode 100644 "\350\216\253\346\265\267\345\251\214/\344\275\234\344\270\232/20240523 \344\275\234\344\270\232.md" diff --git "a/\350\216\253\346\265\267\345\251\214/20240523cp\345\222\214mv.md" "b/\350\216\253\346\265\267\345\251\214/20240523cp\345\222\214mv.md" new file mode 100644 index 0000000..fc1169c --- /dev/null +++ "b/\350\216\253\346\265\267\345\251\214/20240523cp\345\222\214mv.md" @@ -0,0 +1,55 @@ +### cp:用于复制文件和目录 + + - 复制文件:`cp 源文件 目标文件` + - 复制文件到目录: cp 源文件 目标目录 + - 复制目录:`cp -r 源目录 目标目录` :没-r复制不了目录 + +##### 一些常用选项 + +``` +1. -r 或 -R (递归): 用于复制目录及其内容,包括子目录和文件。 +2. -i (交互式): 在覆盖已存在的文件之前提示用户确认,避免不小心覆盖重要文件。 +3. -f (强制): 强制覆盖已存在的文件,不会提示用户。 +4. -u (更新): 只有当源文件比目标文件新或者目标文件不存在时才复制,适用于增量备份。 +5. -v (详细): 显示复制操作的过程,包括被复制的文件名,有助于监控复制进度。 +6. -p (保留): 保留源文件的属性,如权限、所有权、时间戳等。 +7. -a (归档): 类似于 `-pdr` 的组合,递归复制目录并保留文件属性,但不复制特殊文件如软链接。 +``` + + + +### mv:用于移动文件或目录,或者对它们进行重命名 + + - 移动文件或目录:`mv 源目录/文件 目标目录` + - 重命名文件或目录:`mv 原文件名 新文件名` + +原则: + + 目标不存在,一定重命名 + +1. 当是移动时,只能是文件移到目录 +2. 如何分辩是移动还是重命名 + 1. 源文件 - 目标文件 + 1. 目标已经存在:源文件替换了目标文件 + 2. 目标不存在:直接将源文件改名为目标文件 + 2. 源文件 -目标目录 + 1. 目标存在:将源文件移到目标目录里 + 2. 目标不存在:将源文件改为目标名 + 3. 源目录 - 目标目录 + 1. 目标已存在:将源移到目标里 + 2. 已经不存在:源目录改为目标目录名 + +##### 一些常用的选项 + +``` +-i: 在覆盖已存在的文件或目录之前提示用户确认,以避免意外覆盖。 +-f: 强制移动操作,如果目标文件已存在,则不提示直接覆盖。 +-u: 只有当源文件比目标文件新或者目标文件不存在时才移动或重命名。 +-v: 显示详细的操作过程,包括移动的文件名,便于追踪操作进度。 +-b: 在覆盖文件前,为已存在的文件创建一个备份。默认情况下,备份文件的名称会加上一个波浪线(如 file.txt~)。 +-s: 指定备份文件使用的后缀,代替默认的波浪线。 +-t: 指定目标目录,适用于移动多个文件到同一目录下。 +``` + + + diff --git "a/\350\216\253\346\265\267\345\251\214/20240518\344\275\234\344\270\232.md" "b/\350\216\253\346\265\267\345\251\214/\344\275\234\344\270\232/20240518\344\275\234\344\270\232.md" similarity index 100% rename from "\350\216\253\346\265\267\345\251\214/20240518\344\275\234\344\270\232.md" rename to "\350\216\253\346\265\267\345\251\214/\344\275\234\344\270\232/20240518\344\275\234\344\270\232.md" diff --git "a/\350\216\253\346\265\267\345\251\214/\344\275\234\344\270\232/20240523 \344\275\234\344\270\232.md" "b/\350\216\253\346\265\267\345\251\214/\344\275\234\344\270\232/20240523 \344\275\234\344\270\232.md" new file mode 100644 index 0000000..3bed448 --- /dev/null +++ "b/\350\216\253\346\265\267\345\251\214/\344\275\234\344\270\232/20240523 \344\275\234\344\270\232.md" @@ -0,0 +1,180 @@ +相关和目录可自行创建后再操作 + +1. 在家目录下建立文件exam.c,将文件exam.c拷贝到/tmp这个目录下,并改名为 shiyan.c + + ``` + wx@hecs-169992:~$ touch exam.c + wx@hecs-169992:~$ cp exam.c /tmp/shiyan.c + ``` + +2. 在任何目录下回到用户主目录? + + ``` + cd ~ + ``` + + + +3. 用长格式列出/tmp/test目录下所有的文件包括隐藏文件? + + ``` + wx@hecs-169992:/tmp$ ls -la + + ``` + + + +4. /tmp/test2目录下,创建5个文件分别是 1.txt 2.txt 3.txt 4.txt 5.txt,压缩这5个文件,压缩包的名字是hailiang.tar + + ``` + wx@hecs-169992:/tmp/test2$ touch 1.txt 2.txt 3.txt 4.txt 5.txt + wx@hecs-169992:/tmp/test2$ tar -cvf hailiang.tar *.txt + + ``` + + + +5. 当前目录,建立文件 file1.txt 并更名为 file2.txt? + + ``` + wx@hecs-169992:/tmp/test2$ mv file1.txt file2.txt + ``` + + + +6. 当前目录,用vim建立文件bbbb.txt 并将用户名的加入其中保存退出? + + ``` + vim bbbb.txt + 按i进入编辑模式,将用户名输入,输入完成后,按esc退出插入模式,输入wq! + ``` + + + +7. 将家目录中扩展名为txt、doc和bak的文件全部复制到/tmp/test目录中? + + ``` + wx@hecs-169992:~$ cp *.txt *.doc *.bak /tmp/test + ``` + + + +8. 将文件file1.txt从当前目录移动到家目录的/docs中 + + ``` + wx@hecs-169992:/tmp$ mv file1.txt /home/wx/docs + ``` + + + +9. 复制文件file2.txt从当前目录到家目录/backup中。 + + ``` + wx@hecs-169992:/tmp$ cp file2.txt /home/wx/backup + ``` + + + +10. 将家目录/docs中的所有文件和子目录移动到家目录/archive中。 + + ``` + wx@hecs-169992:~$ mv docs/* archive + ``` + + + +11. 复制家目录/photos及其所有内容到家目录/backup中。 + + ``` + wx@hecs-169992:~$ cp -r photos/ backup/ + ``` + + + +12. 将文件家目录/docs/report.doc移动到家目录/papers中,并将其重命名为final_report.doc。 + + ``` + wx@hecs-169992:~/docs$ mv report.doc ../papers/final_report.doc + ``` + + + +13. 在家目录/docs中创建一个名为notes.txt的空文件,并将其复制到目录家目录/backup中。 + + ``` + wx@hecs-169992:~/docs$ cp notes.txt ../backup/ + ``` + + + +14. 复制家目录/images中所有以.jpg结尾的文件到家目录/photos中。 + + ``` + wx@hecs-169992:~$ cp images/*.jpg photos/ + ``` + + + +15. 将文件家目录/docs/file1.txt和家目录/docs/file2.txt复制到家目录/backup中。 + + ``` + wx@hecs-169992:~/docs$ cp file* ../backup + ``` + + + +16. 将家目录/docs中的所有.txt文件复制到家目录/text_files中。 + + ``` + wx@hecs-169992:~$ cp docs/*.txt text_files/ + ``` + + + +17. 将家目录/docs中的所有文件移动到家目录/temp中,并且如果文件已存在,则覆盖它们。 + + ``` + wx@hecs-169992:~$ cp docs/* temp/ + ``` + + + +18. 将家目录/docs中的所有文件移动到家目录/archive中,并且在移动时显示详细的移动信息。 + + ``` + wx@hecs-169992:~$ mv docs/* archive/ -v + + ``` + + + +19. 复制家目录/docs中的所有子目录及其内容到家目录/backup中。 + + ``` + wx@hecs-169992:~$ cp -r docs/* backup/ + ``` + + + +20. 将家目录/docs中的所有文件和子目录移动到家目录/backup中,但排除文件名以"temp_"开头的文件。 + + ``` + wx@hecs-169992:~$ find ~/docs/* -type f,d ! -name 'temp*' -print0 | xargs -0 mv -t ~/backup/ + ``` + + + +21. 将目录/docs/report.txt移动到家目录/archive中,但如果目标目录中已存在同名文件,则不直接覆盖,先备份同名文件为report.txt_bak。 + + ``` + mv -bS _bak archive/report backup + ``` + + + +22. 将家目录/docs中所有以.pdf结尾的文件复制到家目录/pdf_files中,并且如果目标目录中已存在同名文件,则忽略它们。 + +``` +wx@hecs-169992:~$ cp docs/*.pdf pdf_files/ +``` + -- Gitee From e9d4d548b1a7ee08daaf11b5b9569bd7ccc2af5f Mon Sep 17 00:00:00 2001 From: Your Name Date: Fri, 24 May 2024 22:01:09 +0800 Subject: [PATCH 3/6] =?UTF-8?q?=E7=AC=94=E8=AE=B0?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../20240518\344\275\234\344\270\232.md" | 0 .../20240523 \344\275\234\344\270\232.md" | 0 2 files changed, 0 insertions(+), 0 deletions(-) rename "\350\216\253\346\265\267\345\251\214/\344\275\234\344\270\232/20240518\344\275\234\344\270\232.md" => "\350\216\253\346\265\267\345\251\214/20240518\344\275\234\344\270\232.md" (100%) rename "\350\216\253\346\265\267\345\251\214/\344\275\234\344\270\232/20240523 \344\275\234\344\270\232.md" => "\350\216\253\346\265\267\345\251\214/20240523 \344\275\234\344\270\232.md" (100%) diff --git "a/\350\216\253\346\265\267\345\251\214/\344\275\234\344\270\232/20240518\344\275\234\344\270\232.md" "b/\350\216\253\346\265\267\345\251\214/20240518\344\275\234\344\270\232.md" similarity index 100% rename from "\350\216\253\346\265\267\345\251\214/\344\275\234\344\270\232/20240518\344\275\234\344\270\232.md" rename to "\350\216\253\346\265\267\345\251\214/20240518\344\275\234\344\270\232.md" diff --git "a/\350\216\253\346\265\267\345\251\214/\344\275\234\344\270\232/20240523 \344\275\234\344\270\232.md" "b/\350\216\253\346\265\267\345\251\214/20240523 \344\275\234\344\270\232.md" similarity index 100% rename from "\350\216\253\346\265\267\345\251\214/\344\275\234\344\270\232/20240523 \344\275\234\344\270\232.md" rename to "\350\216\253\346\265\267\345\251\214/20240523 \344\275\234\344\270\232.md" -- Gitee From c6fef1b2df44009effcb64935dbfd0cf4abefce8 Mon Sep 17 00:00:00 2001 From: Your Name Date: Mon, 27 May 2024 10:27:21 +0800 Subject: [PATCH 4/6] =?UTF-8?q?=E7=AC=94=E8=AE=B0?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- ...35\345\257\271\350\267\257\345\276\204.md" | 35 +++++++++++++++++++ 1 file changed, 35 insertions(+) create mode 100644 "\350\216\253\346\265\267\345\251\214/20240525\347\233\270\345\257\271\350\267\257\345\276\204\345\222\214\347\273\235\345\257\271\350\267\257\345\276\204.md" diff --git "a/\350\216\253\346\265\267\345\251\214/20240525\347\233\270\345\257\271\350\267\257\345\276\204\345\222\214\347\273\235\345\257\271\350\267\257\345\276\204.md" "b/\350\216\253\346\265\267\345\251\214/20240525\347\233\270\345\257\271\350\267\257\345\276\204\345\222\214\347\273\235\345\257\271\350\267\257\345\276\204.md" new file mode 100644 index 0000000..6a9d2ba --- /dev/null +++ "b/\350\216\253\346\265\267\345\251\214/20240525\347\233\270\345\257\271\350\267\257\345\276\204\345\222\214\347\273\235\345\257\271\350\267\257\345\276\204.md" @@ -0,0 +1,35 @@ +在计算机文件系统中,路径是用来定位文件或目录位置的字符串。根据路径的参照点不同,可以分为两种类型:相对路径和绝对路径。 + +- #### 1. 绝对路径 + + **定义**:从根目录 `/` 开始的完整路径,用于唯一确定文件或目录的位置。 + + **特点**: + + - 以 `/` 开头 + - 与当前工作目录无关 + + **示例**: + + - `/home/user/documents/file.txt` + - `/usr/local/bin` + + #### 2. 相对路径 + + **定义**:相对于当前工作目录的路径,用于在当前目录的基础上指向文件或目录。 + + **特点**: + + - 不以 `/` 开头 + - 依赖于当前工作目录 + + **特殊符号**: + + - `.` 表示当前目录 ./ + - `..` 表示上一级目录../ + +**示例:** + +如果当前目录是`/home/user`,那么: + +- 相对路径 `documents/file.txt` 实际上指向的是 `/home/user/documents/file.txt`。 \ No newline at end of file -- Gitee From 7806bd07f136d85ad5d3a32d34d3f05758d2aa49 Mon Sep 17 00:00:00 2001 From: Your Name Date: Tue, 28 May 2024 16:29:32 +0800 Subject: [PATCH 5/6] =?UTF-8?q?=E7=AC=94=E8=AE=B0?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- ...76\347\232\204\345\221\275\344\273\244.md" | 221 ++++++++++++++++++ ...63\347\232\204\347\273\203\344\271\240.md" | 88 +++++++ 2 files changed, 309 insertions(+) create mode 100644 "\350\216\253\346\265\267\345\251\214/20240527\346\237\245\346\211\276\347\232\204\345\221\275\344\273\244.md" create mode 100644 "\350\216\253\346\265\267\345\251\214/20240527\346\237\245\350\257\242\345\221\275\344\273\244\347\233\270\345\205\263\347\232\204\347\273\203\344\271\240.md" diff --git "a/\350\216\253\346\265\267\345\251\214/20240527\346\237\245\346\211\276\347\232\204\345\221\275\344\273\244.md" "b/\350\216\253\346\265\267\345\251\214/20240527\346\237\245\346\211\276\347\232\204\345\221\275\344\273\244.md" new file mode 100644 index 0000000..55780fb --- /dev/null +++ "b/\350\216\253\346\265\267\345\251\214/20240527\346\237\245\346\211\276\347\232\204\345\221\275\344\273\244.md" @@ -0,0 +1,221 @@ +## 查找的命令 + +### 1、find 命令 + +用于查找文件和命令,实时更新 + +##### 按名称查找 + +```bash +find /path -name 'filename' +``` + + + +##### 按名称查找目录 + +```bash +find /path -type d -name 'filename' +``` + + + +##### 查找所有.txt文件 + +```bash +find /path -type d -name '*.txt' +``` + + + +##### 查找大于1MB的文件 + +```bash +find /path -type f -size +1MB +``` + + + +##### 查找最近7天内修改过的文件 + +```bash +find /path -f -mtime -7 +``` + + + +##### 查找文件并对其执行命令 + +```bash +find /path f -exec command {} \; +``` + + + +### 2、location 命令 + +通过预建的数据库,快速查找文件的目录。速度比find快,但是需要实时更新数据库。 + +1. ##### 查找文件名中包含"filename" 的所有文件 + + ```bash + location filename + ``` + + + +2. ##### 查找所有.txt文件 + + ```bash + location "*.txt" + ``` + + + +### 3、which命令 + +用于查找可执行文件的位置,它在用户的PATH环境变量走搜索命令 + +用于一下几种场景: + +1. 查找命令的完整路径 +2. 验证命令是否存在 + +### 4、whereis 命令 + +查找可执行文件,源代码和手册页的位置 + +基本用法:whereis command + +例如 + +查找ls 命令的可执行文件、源代码文件和手册页的位置 + +``` bash +whereis ls +``` + + + +### 5、type 命令 + +显示文件的类型,例如是否是内置命令、别名或者可执行的文件 + +例如: + +type ls 显示ls命令的类型 + +-type f 文件类型为文件 + +-type d 文件类型为目录 + +### 6、grep 命令 + +用于在文件内容中搜索匹配的字符串 + +用法: + +##### 在文件中搜索字符串 + +```bash +grep "关键字" 文件名 +``` + + + +##### 忽略大小写查找 + +```bash +grep -i "关键字" /path +``` + + + +##### 显示不包含关键字的行 + +```bash +grep -v "关键字" 文件名 +``` + + + +##### 显示包含关键字的文件名 + +```bash +grep -l "关键字" 文件名 +``` + + + +##### 技术匹配的行数 + +```bash +grep -c "关键字" 文件名 +``` + + + +##### 显示匹配行的行号 + +```bash +grep -n "关键字" 文件名 +``` + + + +##### 仅显示匹配部分 + +```bash +grep -o "关键字" 文件名 +``` + + + +##### 显示匹配行及后面的2行 + +```bash +grep -A "关键字" 文件名 +``` + + + +##### 显示匹配行及前面2行 + +```bash +grep -B "关键字" 文件名 +``` + + + +##### 显示匹配行及前后2行 + +```bash +grep -C "关键字" 文件名 +``` + + + +### 7、find和grep结合使用 + +可以灵活地查找文件及其内容 + +##### 查找包含特定字符串pattern的所有.txt文件 + +```bash +find /path -type f -naem "*.txt" -exec grep "pattern" {} +; +``` + + + +### 8、star 命令 + +用于显示文件或者文件系统的详细信息、大小、权限、修改时间等 + +基本用法 + +##### 显示文件的详细信息 + +```bash +stat filnamem +``` + diff --git "a/\350\216\253\346\265\267\345\251\214/20240527\346\237\245\350\257\242\345\221\275\344\273\244\347\233\270\345\205\263\347\232\204\347\273\203\344\271\240.md" "b/\350\216\253\346\265\267\345\251\214/20240527\346\237\245\350\257\242\345\221\275\344\273\244\347\233\270\345\205\263\347\232\204\347\273\203\344\271\240.md" new file mode 100644 index 0000000..587bdd7 --- /dev/null +++ "b/\350\216\253\346\265\267\345\251\214/20240527\346\237\245\350\257\242\345\221\275\344\273\244\347\233\270\345\205\263\347\232\204\347\273\203\344\271\240.md" @@ -0,0 +1,88 @@ +### 操作题 + +1. **查找当前目录及其子目录中所有扩展名为 `.log` 的文件**: + ```bash + find ./ -type f,d -name "*.log" + ``` + +2. **在 `/var/logs` 目录及其子目录中查找所有包含关键字 `error` 的文件,并显示匹配的行**: + + ```bash + find /var/logs/ -type f -exec grep 'error' -ln {} \; + ``` + +3. **在 `/home/user/docs` 目录中查找文件名包含 `report` 的所有文件**: + + ```bash + find docs/ -type f -name '*report*' + ``` + +4. **查找 `/etc` 目录中最近7天内修改过的文件**: + + ```bash + find /etc/ -mtime -7 + ``` + +5. **显示 `/usr/bin` 目录中名为 `python` 的可执行文件的路径**: + + ```bash + ls bin/python.txt + ``` + +6. **查找系统中名为 `ls` 的命令及其手册页位置**: + ```bash + whereis ls + ``` + +7. **查找当前目录中包含关键字 `TODO` 的所有文件,并显示匹配的行和文件名**: + + ```bash + find ./ -type f -exec grep 'TODO' -ln {} \; + ``` + +8. **在 `/home/user/projects` 目录中查找所有包含关键字 `function` 的 `.js` 文件**: + + ```bash + find projects/ -type f -name '*.js' -exec grep 'function' -lri {} \; + ``` + +9. **查找并显示当前目录及其子目录中所有空文件**: + + ```bash + find . -type f -empty + ``` + +10. **在 `/var/www` 目录中查找包含关键字 `database` 的所有文件,并只显示文件名**: + + ```bash + find /var/www -type f -exec grep -lR "database" {} \; + ``` + +### 综合操作题 + +**综合操作题:** + +假设你在一个名为 `/home/user/workspace` 的目录中工作。你需要完成以下任务: + +1. 查找该目录中所有扩展名为 `.conf` 的文件。 +2. 在这些 `.conf` 文件中查找包含关键字 `server` 的行。 +3. 将包含关键字 `server` 的文件名和匹配的行保存到一个名为 `server_lines.txt` 的文件中。 + +**预期命令步骤:** + +1. 查找所有扩展名为 `.conf` 的文件: + ```bash + find ./ -type f -name '*.conf' + ``` + +2. 在这些 `.conf` 文件中查找包含关键字 `server` 的行: + ```bash + find ./ -type f -name '*.conf' -exec grep 'server' -n {} \; + ``` + +3. 将结果保存到 `server_lines.txt` 文件中: + ```bash + find . -type f -name '*.conf' -exec grep 'server' -n {} \; > server_lines.txt + ``` + +通过这套操作题和综合操作题,你可以全面地了解和应用Linux系统中与文件和内容查询相关的常用命令。 \ No newline at end of file -- Gitee From 37e70d332c36fe7036fcdcc700a605afd0200047 Mon Sep 17 00:00:00 2001 From: Your Name Date: Tue, 28 May 2024 21:26:52 +0800 Subject: [PATCH 6/6] =?UTF-8?q?=E7=AC=94=E8=AE=B0?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- ...76\347\232\204\345\221\275\344\273\244.md" | 221 -------------- ...63\347\232\204\347\273\203\344\271\240.md" | 287 ++++++++++++++++-- 2 files changed, 258 insertions(+), 250 deletions(-) delete mode 100644 "\350\216\253\346\265\267\345\251\214/20240527\346\237\245\346\211\276\347\232\204\345\221\275\344\273\244.md" diff --git "a/\350\216\253\346\265\267\345\251\214/20240527\346\237\245\346\211\276\347\232\204\345\221\275\344\273\244.md" "b/\350\216\253\346\265\267\345\251\214/20240527\346\237\245\346\211\276\347\232\204\345\221\275\344\273\244.md" deleted file mode 100644 index 55780fb..0000000 --- "a/\350\216\253\346\265\267\345\251\214/20240527\346\237\245\346\211\276\347\232\204\345\221\275\344\273\244.md" +++ /dev/null @@ -1,221 +0,0 @@ -## 查找的命令 - -### 1、find 命令 - -用于查找文件和命令,实时更新 - -##### 按名称查找 - -```bash -find /path -name 'filename' -``` - - - -##### 按名称查找目录 - -```bash -find /path -type d -name 'filename' -``` - - - -##### 查找所有.txt文件 - -```bash -find /path -type d -name '*.txt' -``` - - - -##### 查找大于1MB的文件 - -```bash -find /path -type f -size +1MB -``` - - - -##### 查找最近7天内修改过的文件 - -```bash -find /path -f -mtime -7 -``` - - - -##### 查找文件并对其执行命令 - -```bash -find /path f -exec command {} \; -``` - - - -### 2、location 命令 - -通过预建的数据库,快速查找文件的目录。速度比find快,但是需要实时更新数据库。 - -1. ##### 查找文件名中包含"filename" 的所有文件 - - ```bash - location filename - ``` - - - -2. ##### 查找所有.txt文件 - - ```bash - location "*.txt" - ``` - - - -### 3、which命令 - -用于查找可执行文件的位置,它在用户的PATH环境变量走搜索命令 - -用于一下几种场景: - -1. 查找命令的完整路径 -2. 验证命令是否存在 - -### 4、whereis 命令 - -查找可执行文件,源代码和手册页的位置 - -基本用法:whereis command - -例如 - -查找ls 命令的可执行文件、源代码文件和手册页的位置 - -``` bash -whereis ls -``` - - - -### 5、type 命令 - -显示文件的类型,例如是否是内置命令、别名或者可执行的文件 - -例如: - -type ls 显示ls命令的类型 - --type f 文件类型为文件 - --type d 文件类型为目录 - -### 6、grep 命令 - -用于在文件内容中搜索匹配的字符串 - -用法: - -##### 在文件中搜索字符串 - -```bash -grep "关键字" 文件名 -``` - - - -##### 忽略大小写查找 - -```bash -grep -i "关键字" /path -``` - - - -##### 显示不包含关键字的行 - -```bash -grep -v "关键字" 文件名 -``` - - - -##### 显示包含关键字的文件名 - -```bash -grep -l "关键字" 文件名 -``` - - - -##### 技术匹配的行数 - -```bash -grep -c "关键字" 文件名 -``` - - - -##### 显示匹配行的行号 - -```bash -grep -n "关键字" 文件名 -``` - - - -##### 仅显示匹配部分 - -```bash -grep -o "关键字" 文件名 -``` - - - -##### 显示匹配行及后面的2行 - -```bash -grep -A "关键字" 文件名 -``` - - - -##### 显示匹配行及前面2行 - -```bash -grep -B "关键字" 文件名 -``` - - - -##### 显示匹配行及前后2行 - -```bash -grep -C "关键字" 文件名 -``` - - - -### 7、find和grep结合使用 - -可以灵活地查找文件及其内容 - -##### 查找包含特定字符串pattern的所有.txt文件 - -```bash -find /path -type f -naem "*.txt" -exec grep "pattern" {} +; -``` - - - -### 8、star 命令 - -用于显示文件或者文件系统的详细信息、大小、权限、修改时间等 - -基本用法 - -##### 显示文件的详细信息 - -```bash -stat filnamem -``` - diff --git "a/\350\216\253\346\265\267\345\251\214/20240527\346\237\245\350\257\242\345\221\275\344\273\244\347\233\270\345\205\263\347\232\204\347\273\203\344\271\240.md" "b/\350\216\253\346\265\267\345\251\214/20240527\346\237\245\350\257\242\345\221\275\344\273\244\347\233\270\345\205\263\347\232\204\347\273\203\344\271\240.md" index 587bdd7..c520dab 100644 --- "a/\350\216\253\346\265\267\345\251\214/20240527\346\237\245\350\257\242\345\221\275\344\273\244\347\233\270\345\205\263\347\232\204\347\273\203\344\271\240.md" +++ "b/\350\216\253\346\265\267\345\251\214/20240527\346\237\245\350\257\242\345\221\275\344\273\244\347\233\270\345\205\263\347\232\204\347\273\203\344\271\240.md" @@ -1,61 +1,63 @@ ### 操作题 1. **查找当前目录及其子目录中所有扩展名为 `.log` 的文件**: + ```bash - find ./ -type f,d -name "*.log" + find . -name '*.log' ``` 2. **在 `/var/logs` 目录及其子目录中查找所有包含关键字 `error` 的文件,并显示匹配的行**: - + ```bash - find /var/logs/ -type f -exec grep 'error' -ln {} \; + dabian2ban@class2:~$ grep -r 'error' /var/logs ``` - + 3. **在 `/home/user/docs` 目录中查找文件名包含 `report` 的所有文件**: - + ```bash - find docs/ -type f -name '*report*' + dabian2ban@class2:~/docs$ find . -type f -name '*report*' ``` - + 4. **查找 `/etc` 目录中最近7天内修改过的文件**: - + ```bash - find /etc/ -mtime -7 + dabian2ban@class2:~$ find /etc -type f -mtime -7 ``` - + 5. **显示 `/usr/bin` 目录中名为 `python` 的可执行文件的路径**: - + ```bash - ls bin/python.txt + dabian2ban@class2:~$ ls -l bin/python* ``` - + 6. **查找系统中名为 `ls` 的命令及其手册页位置**: + ```bash - whereis ls + dabian2ban@class2:~$ whereis ls ``` 7. **查找当前目录中包含关键字 `TODO` 的所有文件,并显示匹配的行和文件名**: - + ```bash - find ./ -type f -exec grep 'TODO' -ln {} \; + grep -rn "TODO" . ``` - + 8. **在 `/home/user/projects` 目录中查找所有包含关键字 `function` 的 `.js` 文件**: - + ```bash - find projects/ -type f -name '*.js' -exec grep 'function' -lri {} \; + grep -l 'function' projects/*.js ``` - + 9. **查找并显示当前目录及其子目录中所有空文件**: - + ```bash - find . -type f -empty + dabian2ban@class2:~$ find . -type f -empty ``` - + 10. **在 `/var/www` 目录中查找包含关键字 `database` 的所有文件,并只显示文件名**: - + ```bash - find /var/www -type f -exec grep -lR "database" {} \; + find /var/www/ -type f -exec grep -l 'database' {} \; | xargs -n1 basename ``` ### 综合操作题 @@ -71,18 +73,245 @@ **预期命令步骤:** 1. 查找所有扩展名为 `.conf` 的文件: + ```bash - find ./ -type f -name '*.conf' + dabian2ban@class2:~$ find workspace/ -type f -name '*.conf' ``` 2. 在这些 `.conf` 文件中查找包含关键字 `server` 的行: + ```bash - find ./ -type f -name '*.conf' -exec grep 'server' -n {} \; + dabian2ban@class2:~$ find workspace/ -type f -name '*.conf' -exec grep 'server' -r {} \; ``` 3. 将结果保存到 `server_lines.txt` 文件中: + + ```bash + find workspace/ -type f -name '*.conf' -exec grep 'server' -r {} \; > workspace/server_lines.txt + ``` + +通过这套操作题和综合操作题,你可以全面地了解和应用Linux系统中与文件和内容查询相关的常用命令。 + +# 笔记 + +### 查找的命令 + +### 1、find 命令 + +用于查找文件和命令,实时更新 + +##### 按名称查找 + +```bash +find /path -name 'filename' +``` + + + +##### 按名称查找目录 + +```bash +find /path -type d -name 'filename' +``` + + + +##### 查找所有.txt文件 + +```bash +find /path -type d -name '*.txt' +``` + + + +##### 查找大于1MB的文件 + +```bash +find /path -type f -size +1MB +``` + + + +##### 查找最近7天内修改过的文件 + +```bash +find /path -f -mtime -7 +``` + + + +##### 查找文件并对其执行命令 + +```bash +find /path f -exec command {} \; +``` + + + +### 2、location 命令 + +通过预建的数据库,快速查找文件的目录。速度比find快,但是需要实时更新数据库。 + +1. ##### 查找文件名中包含"filename" 的所有文件 + + ```bash + location filename + ``` + + + +2. ##### 查找所有.txt文件 + ```bash - find . -type f -name '*.conf' -exec grep 'server' -n {} \; > server_lines.txt + location "*.txt" ``` -通过这套操作题和综合操作题,你可以全面地了解和应用Linux系统中与文件和内容查询相关的常用命令。 \ No newline at end of file + + +### 3、which命令 + +用于查找可执行文件的位置,它在用户的PATH环境变量走搜索命令 + +用于一下几种场景: + +1. 查找命令的完整路径 +2. 验证命令是否存在 + +### 4、whereis 命令 + +查找可执行文件,源代码和手册页的位置 + +基本用法:whereis command + +例如 + +查找ls 命令的可执行文件、源代码文件和手册页的位置 + +``` bash +whereis ls +``` + + + +### 5、type 命令 + +显示文件的类型,例如是否是内置命令、别名或者可执行的文件 + +例如: + +type ls 显示ls命令的类型 + +-type f 文件类型为文件 + +-type d 文件类型为目录 + +### 6、grep 命令 + +用于在文件内容中搜索匹配的字符串 + +用法: + +##### 在文件中搜索字符串 + +```bash +grep "关键字" 文件名 +``` + + + +##### 忽略大小写查找 + +```bash +grep -i "关键字" /path +``` + + + +##### 显示不包含关键字的行 + +```bash +grep -v "关键字" 文件名 +``` + + + +##### 显示包含关键字的文件名 + +```bash +grep -l "关键字" 文件名 +``` + + + +##### 技术匹配的行数 + +```bash +grep -c "关键字" 文件名 +``` + + + +##### 显示匹配行的行号 + +```bash +grep -n "关键字" 文件名 +``` + + + +##### 仅显示匹配部分 + +```bash +grep -o "关键字" 文件名 +``` + + + +##### 显示匹配行及后面的2行 + +```bash +grep -A "关键字" 文件名 +``` + + + +##### 显示匹配行及前面2行 + +```bash +grep -B "关键字" 文件名 +``` + + + +##### 显示匹配行及前后2行 + +```bash +grep -C "关键字" 文件名 +``` + + + +### 7、find和grep结合使用 + +可以灵活地查找文件及其内容 + +##### 查找包含特定字符串pattern的所有.txt文件 + +```bash +find /path -type f -naem "*.txt" -exec grep "pattern" {} +; +``` + + + +### 8、star 命令 + +用于显示文件或者文件系统的详细信息、大小、权限、修改时间等 + +基本用法 + +##### 显示文件的详细信息 + +```bash +stat filnamem +``` + -- Gitee