Linux命令大全-文件管理
文章目录
- Linux命令大全-文件管理
-
- 1. `cat` 命令:连接文件并打印输出到标准设备
-
- 语法
- 参数说明
- 实例
- 2. `chmod`命令:控制用户对文件的权限
-
- 语法
- 参数说明
- 八进制语法
- 实例
- 3. `chown` 命令用于设置文件所有者和文件关联组
-
- 语法
- 参数说明
- 实例
- 4.cmp 命令 比较两个文件是否有差异
-
- 语法
- 参数说明
- 实例
- 5. `diff` 比较文件差异的命令
-
- 语法
- 参数说明
- 实例
- 6. file 命令用于识别文件类型
-
- 语法
- 参数说明
- 实例
- 7.`find` 命令用于在指定目录下查找文件
- 语法
-
- 参数说明
- 实例
- 8.less 命令 与 more 类似,less 可以随意浏览文件,支持翻页和搜索,支持上下翻页
- 9.`locate`命令用于查找合格的文档,他将保存文档和目录名称的数据库,并查找符合模型样式条件的文档或目录。
-
- 语法
- 参数说明
- 实例
- 10. more命令 类似 cat
-
- 参数说明
- 实例
- 11.mmove 命令 更改移动文件或目录的名称
-
- 语法
- 参数说明
- 实例
- 12. mv 命令 将文件或目录转移到其他位置
-
- 语法
- 参数说明
- 实例
- 13. paset 命令 列用于合并文件
-
- 语法
- 参数说明
- 实例
- 14. whereis 查找文件
-
- 语法
- 实例
- 15. rm 命令用于删除文件或目录
-
- 语法
- 参数说明
- 实例
- 16. split 文件分割
-
- 语法
- 参数说明
- 实例
- 17. touch 修改文件或目录的时间属性,包括访问时间和更改时间。如果文件不存在,系统将建立新的文件
-
- 语法
- 参数说明
- 实例
- 18. cp 复制文件或目录
-
- 语法
- 参数说明
- 实例
1. cat 命令:连接文件并打印输出到标准设备
语法
cat [-AbeEnstTuv] [--help] [--version] fileName
参数说明
-n从1开始编号所有输出行-b和-n相似,只是-b编号编号空白行-s遇到连续两行以上的空白行时,将空白行合并为空白行输出-v使用 ^ 和 M- 符号,除了 LFD 和 TAB 之外-E输出的每一行最后打印$-T将 TAB 字符显示为 ^I-A--show-all:等价于 -vET-e等价于"-vE"选项-t等价于"-vT"选项
实例
把 test01.txt 加上行号后输入的文档内容 test02.txt 本文档:
cat -n test01.txt > test02.txt
把 test01.txt和 test02.txt将行号添加到文档内容中(空白行不加) test03.txt文档里:
cat -n test01.txt test02.txt >> test03.txt
清空当前目录 tet.txt 文档内容:
cat /dev/null >> test.txt
cat 制作镜像文件。例如要制作软盘的镜像文件,将软盘放好后输入:
cat /dev/fd0 > OUTFILE
相反的,如果想把 image file 写到软盘,输入:
cat IMG_FILE > /dev/fd0
OUTFILE:指输出的镜像文件名 IMG_FILE :指镜像文件 若从镜像文件写回 device 时,device 容量需与相当 通常用制作开机磁片
2. chmod命令:控制用户对文件的权限
语法
chmod [-cfvR] [--help] [--version] mode file...
参数说明
mode : 权限设定字串,格式如下 :
[ugoa...][[+-=][rwxX]...][,...]
u表示该文件的拥有者g表示与该文件的拥有者属于同一个群体(group)者o表示其他以外的人a表示这三者皆是
+表示增加权限-表示取消权限=表示唯一设定权限
r表示可读取w表示可写入x表示可执行X表示只有当该文件是个子目录或者该文件已经被设定过为可执行
-c若该文件权限确实已经更改,才显示其更改动作-f若该文件权限无法被更改也不要显示错误讯息-v显示权限变更的详细资料-R对目前目录下的所有文件与子目录进行相同的权限变更(即以递归的方式逐个变更)--help显示辅助说明--version显示版本
八进制语法
| # | 权限 | rwx | 二进制 |
|---|---|---|---|
| 7 | 读 + 写 + 执行 | rwx | 111 |
| 6 | 读 + 写 | rw- | 110 |
| 5 | 读 + 执行 | r-x | 101 |
| 4 | 只读 | r– | 100 |
| 3 | 写 + 执行 | -wx | 011 |
| 2 | 只写 | -w- | 010 |
| 1 | 只执行 | –x | 001 |
| 0 | 无 | — | 000 |
实例
将目前目录下的所有文件与子目录皆设为任何人可读取
chmod 777 file
对file的所有者和用户组设置读取权限,为其他用户设置只读权限
chmod 774 file
对file的所有者和用户组设置读写权限, 为其他用户设置读权限
chmod 664 file
3. chown 命令用于设置文件所有者和文件关联组
语法
chown [-cfhvR] [--help] [--version] user[:group] file...
参数说明
-user: 新的文件拥有者的使用者 ID-group: 新的文件拥有者的使用者组(group)-c: 显示更改的部分的信息-f: 忽略错误信息-h:修复符号链接-v: 显示详细的处理信息-R: 处理指定目录以及其子目录下的所有文件--help: 显示辅助说明--version: 显示版本
实例
把 test01.txt 的所有者设置 root:
chown root test01.txt
将文件 test02.txt 的拥有者设为 Anna,群体的使用者 gamgroup :
chown Anna:gamgorup test02.txt
将当前前目录下的所有文件与子目录的拥有者皆设为 Anna,群体的使用者 gamgroup:
chown -R Anna:gamgroup *
4.cmp 命令 用于比较两个文件是否有差异
语法
cmp [-clsv][-i <字符数目>][--help][第一个文件][第二个文件]
参数说明
-c除了标明差异处的十进制字码之外,一并显示该字符所对应字符-i<字符数目>或--ignore-initial=<字符数目> 指定一个数目-l或--verbose标示出所有不一样的地方-s或--quiet或--silent不显示错误信息-v或--version显示版本信息--help在线帮助
实例
确定test01.txt和test02.txt是否相同
cmp test01.txt test02.txt
5. diff 命令用于比较文件的差异
语法
diff [-abBcdefHilnNpPqrstTuvwy][-<行数>][-C <行数>][-D <巨集名称>][-I <字符或字符串>][-S <文件>][-W <宽度>][-x <文件或目录>][-X <文件>][--help][--left-column][--suppress-common-line][文件或目录1][文件或目录2]
参数说明
- -<行数> 指定要显示多少行的文本。此参数必须与-c或-u参数一并使用。
-a或--textdiff预设只会逐行比较文本文件。-b或--ignore-space-change不检查空格字符的不同。-B或--ignore-blank-lines不检查空白行。-c显示全部内文,并标出不同之处。-C<行数>或--context<行数> 与执行"-c-<行数>"指令相同。-d或--minimal使用不同的演算法,以较小的单位来做比较。-D<巨集名称>或ifdef<巨集名称> 此参数的输出格式可用于前置处理器巨集。-e或--ed此参数的输出格式可用于ed的script文件。-f或-forward-ed输出的格式类似ed的script文件,但按照原来文件的顺序来显示不同处。-H或--speed-large-files比较大文件时,可加快速度。-I<字符或字符串>或--ignore-matching-lines<字符或字符串> 若两个文件在某几行有所不同,而这几行同时都包含了选项中指定的字符或字符串,则不显示这两个文件的差异。-i或--ignore-case不检查大小写的不同。-l或--paginate将结果交由pr程序来分页。-n或--rcs将比较结果以RCS的格式来显示。-N或--new-file在比较目录时,若文件A仅出现在某个目录中,预设会显示:Only in目录:文件A若使用-N参数,则diff会将文件A与一个空白的文件比较。-p若比较的文件为C语言的程序码文件时,显示差异所在的函数名称。-P或--unidirectional-new-file与-N类似,但只有当第二个目录包含了一个第一个目录所没有的文件时,才会将这个文件与空白的文件做比较。-q或--brief仅显示有无差异,不显示详细的信息。-r或--recursive比较子目录中的文件。-s或--report-identical-files若没有发现任何差异,仍然显示信息。-S<文件>或--starting-file<文件> 在比较目录时,从指定的文件开始比较。-t或--expand-tabs在输出时,将tab字符展开。-T或--initial-tab在每行前面加上tab字符以便对齐。-u,-U<列数>或–unified=<列数> 以合并的方式来显示文件内容的不同。-v或--version显示版本信息。-w或--ignore-all-space忽略全部的空格字符。-W<宽度>或--width<宽度> 在使用-y参数时,指定栏宽。-x<文件名或目录>或--exclude<文件名或目录> 不比较选项中所指定的文件或目录。-X<文件>或--exclude-from<文件> 您可以将文件或目录类型存成文本文件,然后在=<文件>中指定此文本文件。-y或--side-by-side以并列的方式显示文件的异同之处。--help显示帮助。--left-column在使用-y参数时,若两个文件某一行内容相同,则仅在左侧的栏位显示该行内容。--suppress-common-lines在使用-y参数时,仅显示不同之处。
实例
比较docker-compose.yml 和 docker-compose1.yml文件
diff docker-compose.yml docker-compose1.yml
上面的"12c12"两个文件在12行内容有所不同;
并排格式输出
diff test001.txt test.txt -y
|表示前后2个文件内容有不同<表示后面文件比前面文件少了1行内容>表示后面文件比前面文件多了1行内容
6. file 命令用于辨识文件类型
语法
file [-bcLvz][-f <名称文件>][-m <魔法数字文件>...][文件或目录...]
参数说明
-b列出辨识结果时,不显示文件名称。-c详细显示指令执行过程,便于排错或分析程序执行的情形。-f<名称文件> 指定名称文件,其内容有一个或多个文件名称时,让file依序辨识这些文件,格式为每列一个文件名称。-L直接显示符号连接所指向的文件的类别。-m<魔法数字文件> 指定魔法数字文件。-v显示版本信息。-z尝试去解读压缩文件的内容。[文件或目录...]要确定类型的文件列表,多个文件之间使用空格分开,可以使用shell通配符匹配多个文件
实例
显示
test.txt文件类型
file test.txt
显示
test.txt文件类型,但不显示文件名称
file -b test.txt
显示
test.txtMIME类别,但不显示文件名称
file -bi test.txt
7.find 命令用来在指定目录下查找文件
语法
find path -option [ -print ] [ -exec -ok command ] {
} \;
参数说明
-
-mount,-xdev: 只检查和指定目录在同一个文件系统下的文件,避免列出其它文件系统中的文件 -
-amin n: 在过去 n 分钟内被读取过 -
-anewer file: 比文件 file 更晚被读取过的文件 -
-atime n: 在过去 n 天内被读取过的文件 -
-cmin n: 在过去 n 分钟内被修改过 -
-cnewer file:比文件 file 更新的文件 -
-ctime n: 在过去 n 天内创建的文件 -
-mtime n: 在过去 n 天内修改过的文件 -
-empty: 空的文件-gid n or -group name : gid 是 n 或是 group 名称是 name -
-ipath p, -path p: 路径名称符合 p 的文件,ipath 会忽略大小写 -
-name name, -iname name: 文件名称符合 name 的文件。iname 会忽略大小写 -
-size n: 文件大小 是 n 单位,b 代表 512 位元组的区块,c 表示字元数,k 表示 kilo bytes,w 是二个位元组。 -
-type c: 文件类型是 c 的文件。 -
d: 目录 -
c: 字型装置文件 -
b: 区块装置文件 -
p: 具名贮列 -
f: 一般文件 -
l: 符号连结 -
s: socket -
-pid n: process id 是 n 的文件
实例
将当前目录及其子目录下所有文件后缀为 .txt 的文件列出来
find . -name "*.txt"
将当前目录及其子目录中的所有文件列出
find . -type f
将当前目录及其子目录下所有最近 20 天内更新过的文件列出
find . -ctime 20
8.less 命令 与 more 类似,less 可以随意浏览文件,支持翻页和搜索,支持向上翻页和向下翻页
语法
less [参数] 文件
参数说明
-b<缓冲区大小> 设置缓冲区的大小-e当文件显示结束后,自动离开-f强迫打开特殊文件,例如外围设备代号、目录和二进制文件-g只标志最后搜索的关键词-i忽略搜索时的大小写-m显示类似more命令的百分比-N显示每行的行号-o<文件名> 将less 输出的内容在指定文件中保存起来-Q不使用警告音-s显示连续空行为一行-S行过长时间将超出部分舍弃-x<数字> 将"tab"键显示为规定的数字空格/字符串:向下搜索"字符串"的功能?字符串:向上搜索"字符串"的功能n:重复前一个搜索(与 / 或 ? 有关)N:反向重复前一个搜索(与 / 或 ? 有关)
键盘操作
b向上翻一页d向后翻半页h显示帮助界面Q退出less 命令u向前滚动半页y向前滚动一行空格键滚动一页回车键滚动一行[pagedown]: 向下翻动一页[pageup]: 向上翻动一页
实例
查看test.txt
less test.txt
ps查看进程信息并通过less分页显示
ps -ef |less
查看命令历史使用记录并通过less分页显示
history | less
9.locate命令用于查找符合条件的文档,他会去保存文档和目录名称的数据库内,查找合乎范本样式条件的文档或目录。
一般情况我们只需要输入 locate fileName 即可查找指定文件
语法
locate [-d ][--help][--version][范本样式...]
参数说明
-b, 仅匹配路径名的基本名称-c– 只输出找到的数量-d, --database DBPATH – 使用 DBPATH 指定的数据库,而不是默认数据/var/lib/mlocate/mlocate.db-e, --existing – 仅打印当前现有文件的条目-1– 如果 是 1.则启动安全模式。在安全模式下,使用者不会看到权限无法看到 的档案。这会始速度减慢,因为 locate 必须至实际的档案系统中取得档案的 权限资料。-0, --null – 在输出上带有NUL的单独条目-S, --statistics – 不搜索条目,打印有关每个数据库的统计信息-q– 安静模式,不会显示任何错误讯息。-P, --nofollow, -H – 检查文件存在时不要遵循尾随的符号链接-l, --limit, -n LIMIT – 将输出(或计数)限制为LIMIT个条目-n– 至多显示 n个输出。-m, --mmap – 被忽略,为了向后兼容-r, --regexp REGEXP – 使用基本正则表达式--regex– 使用扩展正则表达式-q, --quiet – 安静模式,不会显示任何错误讯息-s, --stdio – 被忽略,为了向后兼容-o– 指定资料库存的名称。-h, --help – 显示帮助-i, --ignore-case – 忽略大小写-V, --version – 显示版本信息
实例
全文查找 test 文件
locate test
10. more命令 类似 cat
不过会以一页一页的形式显示,更方便使用者逐页阅读,而最基本的指令就是按空白键(space)就往下一页显示,按 b 键就会往回(back)一页显示,而且还有搜寻字串的功能(与 vi 相似),使用中的说明文件,请按 h
参数说明
-num一次显示的行数-d提示使用者,在画面下方显示 [Press space to continue, ‘q’ to quit.],如果使用者按错键,则会显示 [Press ‘h’ for instructions.] 而不是 ‘哔’ 声-l取消遇见特殊字元 ^L(送纸字元)时会暂停的功能-f计算行数时,以实际上的行数,而非自动换行过后的行数(有些单行字数太长的会被扩展为两行或两行以上)-p不以卷动的方式显示每一页,而是先清除萤幕后再显示内容-c跟-p相似,不同的是先显示内容再清除其他旧资料-s当遇到有连续两行以上的空白行,就代换为一行的空白行-u不显示下引号 (根据环境变数 TERM 指定的 terminal 而有所不同)+/pattern在每个文档显示前搜寻该字串(pattern),然后从该字串之后开始显示+num从第 num 行开始显示fileNames欲显示内容的文档,可为复数个数
实例
逐页显示 testfile 文档内容,如有连续两行以上空白行则以一行空白行显示
more -s test.txt
从第 20 行开始,每页显示20行显示 test.txt 之文档内容
more +20 -20 test.txt
11.mmove 命令 移动文件或目录,更改名称
语法
mmove [源文件或目录...][目标文件或目录]
参数说明
[源文件或目录…]: 执行操作的源文件或目录路径[目标文件或目录]: 执行操作后的目标文件或目录路径
实例
使用指令mmove将文件"test.txt"移动到目录"test"中
mmove test.txt test
12. mv 命令 用来为文件或目录改名、或将文件或目录移入其它位置
语法
mv [options] source dest
mv [options] source... directory
参数说明
-b: 当目标文件或目录存在时,在执行覆盖前,会为其创建一个备份。-i: 如果指定移动的源目录或文件与目标的目录或文件同名,则会先询问是否覆盖旧文件,输入 y 表示直接覆盖,输入 n 表示取消该操作。-f: 如果指定移动的源目录或文件与目标的目录或文件同名,不会询问,直接覆盖旧文件。-n: 不要覆盖任何已存在的文件或目录。-u:当源文件比目标文件新或者目标文件不存在时,才执行移动操作
实例
将文件 aaa 改名为 bbb :
mv aaa bbb
13. paset 命令 用于合并文件的列
语法
paste [-s][-d <间隔字符>][--help][--version][文件...]
参数说明
-`-d<间隔字符>或–delimiters=<间隔字符> 用指定的间隔字符取代跳格字符。
-s或–serial 串列进行而非平行处理。`d<间隔字符>或–delimiters=<间隔字符> 用指定的间隔字符取代跳格字符。
实例
将文件"test"、“test01” 进行合并
paste test test01
14. whereis 查找文件
语法
whereis [-bfmsu][-B <目录>...][-M <目录>...][-S <目录>...][文件...]
-b只查找二进制文件。-B<目录>只在设置的目录下查找二进制文件。-f不显示文件名前的路径名称。-m只查找说明文件。-M<目录>只在设置的目录下查找说明文件。-s只查找原始代码文件。-S<目录>只在设置的目录下查找原始代码文件。-u查找不包含指定类型的文件。
实例
查找test的位置
whereis test
15. rm 命令用于删除一个文件或者目录
语法
rm [options] name...
参数说明
-i删除前逐一询问确认。-f即使原档案属性设为唯读,亦直接删除,无需逐一确认。-r将目录及以下之档案亦逐一删除。
实例
删除当前目录下的test文件夹
rm -rf test
删除当前目录下的所有文件及文件夹,并逐一询问
rm -r *
16. split 文件分割
语法
split [--help][--version][-<行数>][-b <字节>][-C <字节>][-l <行数>][要切割的文件][输出文件名]
参数说明
-<行数>: 指定每多少行切成一个小文件-b<字节>: 指定每多少字节切成一个小文件-C<字节>: 与参数"-b"相似,但是在切 割时将尽量维持每行的完整性[输出文件名]: 设置切割后文件的前置文件名, split会自动在前置文件名后再加上编号
实例
将文件"test"每10行切割成一个文件
split -10 test.txt
将文件"test" 每10行分割成一个文件,并设置文件前缀未z
split -10 test.txt z
17. touch 修改文件或者目录的时间属性,包括存取时间和更改时间。若文件不存在,系统会建立一个新的文件
语法
touch [-acfm][-d<日期时间>][-r<参考文件或目录>] [-t<日期时间>][--help][--version][文件或目录…]
参数说明
-a改变档案的读取时间记录。-m改变档案的修改时间记录。-c假如目的档案不存在,不会建立新的档案。与 --no-create 的效果一样。-f不使用,是为了与其他 unix 系统的相容性而保留。-r使用参考档的时间记录,与 --file 的效果一样。-d设定时间与日期,可以使用各种不同的格式。-t设定档案的时间记录,格式与 date 指令相同。--no-create不会建立新档案。
实例
新建一个test文件
touch test
修改test文件的时间属性为当前系统时间
touch test
ls -l test #查看文件时间属性
18. cp 用于复制文件或目录
语法
cp [options] source dest 或 cp [options] source... directory
参数说明
-a:此选项通常在复制目录时使用,它保留链接、文件属性,并复制目录下的所有内容。其作用等于dpR参数组合。-d:复制时保留链接。这里所说的链接相当于 Windows 系统中的快捷方式。-f:覆盖已经存在的目标文件而不给出提示。-i:与 -f 选项相反,在覆盖目标文件之前给出提示,要求用户确认是否覆盖,回答 y 时目标文件将被覆盖。-p:除复制文件的内容外,还把修改时间和访问权限也复制到新文件中。-r:若给出的源文件是一个目录文件,此时将复制该目录下所有的子目录和文件。-l:不复制文件,只是生成链接文件。
实例
复制test到test2文件夹下
cp -r test/ test2