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
或--text
diff预设只会逐行比较文本文件。-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.txt
MIME类别,但不显示文件名称
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