一、文件管理命令
1、mv
2、cat
3、chmod
4、chown
5、cp
6、find
7、grep
一、文件管理命令
1、mv
1、修改文件名称或目录名称
2、将文件或目录移入其它位置
1.1、语法:
mv [options] source dest
mv [options] source... directory
1.2、参数说明
选项参数 | 说明 |
---|---|
-b | 当目标文件或目录存在时,在执行覆盖前,会为其创建一个备份。 |
-i | 如果指定移动的源目录或文件与目标的目录或文件同名,则会先询问是否覆盖旧文件,输入 y 表示直接覆盖,输入 n 表示取消该操作。 |
-f | 如果指定移动的源目录或文件与目标的目录或文件同名,不会询问,直接覆盖旧文件。 |
-n | 不要覆盖任何已存在的文件或目录。 |
-u | 当源文件比目标文件新或者目标文件不存在时,才执行移动操作。 |
1.3、实例:
修改文件名称
mv 源文件名 目标文件名
# 将a文件重命名为b,如果b文件存在,则覆盖b文件
mv a.txt b.txt
2、cat
连接文件并打印到标准输出设备上
1、语法
选项参数 | 说明 |
---|---|
-n | –number 由 1 开始对所有输出的行数编号 |
-b | –number-nonblank 和 -n 相似,只不过对于空白行不编号 |
-s | –squeeze-blank 当遇到有连续两行以上的空白行,就代换为一行的空白行 |
2、实例
-
一次输出整个文件内容,并附带行号
cat -n cat.txt
-
创建文件,并把标准输入 输出到文件中
cat<<EOF,以EOF为标准输入结束
cat <<EOF > cat_1104.txt abcd efg EOF
cat>filename,创建文件,并把标准输入输出到filename文件中,以ctrl+d作为输入结束
cat > cat_20201104.txt
-
把几个文件的内容,附加行号(空白行不加)合成一个文件
cat -b cat.txt cat_20201104.txt > cat_all.txt
- 反向输出,将文件从尾到头输出到标准输出上
tac cat_all.txt
3、chmod
控制用户对文件的权限的命令
文件调用权限分为三级 : 文件所有者(Owner)、用户组(Group)、其它用户(Other Users)
只有文件所有者和超级用户可以修改文件或目录的权限
3.1、语法
chmod [-cfvR] [--help] [--version] mode file...
参数说明
mode : 权限设定字串,格式如下 :
[ugoa...][[+-=][rwxX]...][,...]
其中:
权限范围 | 说明 |
---|---|
u | 目录或文件的拥有者 |
g | 与该目录或文件的拥有者属于同一个群组(group)者 |
o | 表示其他以外的人 |
a | 所有的用户和群组 |
权限 | 权限代号 | 说明 |
---|---|---|
r | 4 | 表示可读取 |
w | 2 | 表示可写入 |
x | 1 | 表示可执行 |
- | 0 | 表示删除 |
+ 表示增加权限、- 表示取消权限、= 表示唯一设定权限。
其他参数说明:
-c : 若该文件权限确实已经更改,才显示其更改动作
-f : 若该文件权限无法被更改也不要显示错误讯息
-v : 显示权限变更的详细资料
-R : 对目前目录下的所有文件与子目录进行相同的权限变更(即以递归的方式逐个变更)
--help : 显示辅助说明
--version : 显示版本
3.2、实例:
-
给所有用户增加可执行权限
chmod a+x while.sh
-
当前用户仅保留读的权限
chmod u=r while.sh
-
删除所有用户和组的读写执行权限
chmod a-rwx while.sh
-
为用户赋予读写权限,所属组赋予可读权限
chmod u+rw,g+r while.sh
-
为当前用户赋予读、写、可执行权限,为所属组和其他人赋予可读权限(通过权限代号)
chmod 744 while.sh
4、chown
设置文件所有者和文件关联组的命令
1、语法
chown [-cfhvR] [--help] [--version] user[:group] file...
参数说明:
参数 | 说明 |
---|---|
user | 新的文件拥有者的使用者 ID |
group | 新的文件拥有者的使用者组(group) |
-c | 显示更改的部分的信息 |
-f | 忽略错误信息 |
-h | 修复符号链接 |
-v | 显示详细的处理信息 |
-R | 处理指定目录以及其子目录下的所有文件 |
–help | 显示辅助说明 |
–version | 显示版本 |
2、实例
-
修改文件的所属用户和所属组
chown lanlan:lanlan while.sh # 效果等同于chown lanlan: while.sh
-
仅改变文件的所属群组
chown :root while.sh
-
仅修改文件所属用户,并显示更改部分的信息(-c)
chown -c bigdata while.sh
5.cp
主要用于复制文件或目录
5.1、语法
cp [options] source dest
或者
cp [options] source... directory
参数说明:
参数 | 说明 |
---|---|
-a | 此选项通常在复制目录时使用,它保留链接、文件属性,并复制目录下的所有内容。其作用等于dpR参数组合。 |
-d | 复制时保留链接。这里所说的链接相当于Windows系统中的快捷方式。 |
-f | 覆盖已经存在的目标文件而不给出提示。 |
-i | 与-f选项相反,在覆盖目标文件之前给出提示,要求用户确认是否覆盖,回答"y"时目标文件将被覆盖。 |
-p | 除复制文件的内容外,还把修改时间和访问权限也复制到新文件中。 |
-r | 若给出的源文件是一个目录文件,此时将复制该目录下所有的子目录和文件。 |
-l | 不复制文件,只是生成链接文件。 |
5.2、实例:
-
复制一份当前目录下的文件,若目标文件存在,进行提示
cp -i test.sh test2.sh
-
拷贝文件夹下所有目录和文件到目标文件夹
源文件夹
cp -r test/ mycopy/
目标文件夹
-
为相应文件创建软链接
cp -s while.sh s_while.sh
6、find
用来在指定目录下查找文件
任何位于参数之前的字符串都将被视为欲查找的目录名。如果使用该命令时,不设置任何参数,则 find 命令将在当前目录下查找子目录与文件。并且将查找到的子目录和文件全部进行显示。
6.1、语法
参数 | 说明 |
---|---|
amin n | 在过去 n 分钟内被读取过 |
anewer file | 比文件 file 更晚被读取过的文件 |
atime n | 在过去n天内被读取过的文件 |
cmin n | 在过去 n 分钟内被修改过 |
cnewer file | 比文件 file 更新的文件 |
ctime 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 的文件。 |
按类型读取文件时的命令说明
命令 | 说明 |
---|---|
c | 字符设备文件 |
d | 目录 |
c | 字型装置文件 |
b | 块设备文件 |
p | 管道文件 |
f | 一般文件 |
l | 符号连结 |
6.2、实例:
-
过去一天内查询过的文件
find -atime -1
-
过去5分钟内查询过的文件
find -amin 5
-
过去一天内修改过的文件
find -ctime -1
-
查询当前目录下c开头的文件
find ./ -name 'c*'
-
查询权限为744的文件
find -perm 744
7、grep
用于查找文件里符合条件的字符串
grep 指令用于查找内容包含指定的范本样式的文件,如果发现某文件的内容符合所指定的范本样式,预设 grep 指令会把含有范本样式的那一列显示出来。若不指定任何文件名称,或是所给予的文件名为 -,则 grep 指令会从标准输入设备读取数据。
7.1、语法:
grep [-abcEFGhHilLnqrsvVwxy][-A<显示列数>][-B<显示列数>][-C<显示列数>][-d<进行动作>][-e<范本样式>][-f<范本文件>][--help][范本样式][文件或目录...]
或者grep [option] pattern file/dir
参数说明
参数 | 说明 |
---|---|
-a 或 --text | 不要忽略二进制的数据。 |
-A<显示行数> 或 --after-context=<显示行数> | 除了显示符合范本样式的那一列之外,并显示该行之后的内容。 |
-b 或 --byte-offset | 在显示符合样式的那一行之前,标示出该行第一个字符的编号。 |
-B<显示行数> 或 --before-context=<显示行数> | 除了显示符合样式的那一行之外,并显示该行之前的内容。 |
-c 或 --count | 计算符合样式的列数。 |
-C<显示行数> 或 --context=<显示行数>或-<显示行数> | 除了显示符合样式的那一行之外,并显示该行之前后的内容。 |
-d <动作> 或 --directories=<动作> | 当指定要查找的是目录而非文件时,必须使用这项参数,否则grep指令将回报信息并停止动作。 |
-e<范本样式> 或 --regexp=<范本样式> | 指定字符串做为查找文件内容的样式。 |
-E 或 --extended-regexp | 将样式为延伸的正则表达式来使用。 |
-f<规则文件> 或 --file=<规则文件> | 指定规则文件,其内容含有一个或多个规则样式,让grep查找符合规则条件的文件内容,格式为每行一个规则样式。 |
-F 或 --fixed-regexp | 将样式视为固定字符串的列表。 |
-i 或 --ignore-case | 忽略字符大小写的差别。 |
-l 或 --file-with-matches | 列出文件内容符合指定的样式的文件名称。 |
-L 或 --files-without-match | 列出文件内容不符合指定的样式的文件名称。 |
-n 或 --line-number | 显示匹配内容所在行数。 |
-o 或 --only-matching | 只显示匹配PATTERN 部分。 |
-v 或 --invert-match | 显示不包含匹配文本的所有行。 |
-R | 递归查找文件 |
-
查找出后缀为sh的文件,且文件中包含t字符的当前行数据
grep t *sh
-
递归查找某目录下含有指定字符的当前行数据
grep -r in loop/
-
匹配指定范围内的字符
匹配含有i和I的行数据
grep [iI] grep.txt
匹配含有a-f范围内字母的行数据grep [a-f] grep.txt
匹配含有不在a-f范围内字母的行数据grep [^a-f] grep.txt
匹配指定字符串grep '\(are\)' grep.txt
匹配L开头的单词的所在行数据grep '\<L' grep.txt
匹配iIL三个字母开头的单词的所在行grep '\<[iIL]' grep.txt
匹配含有以u结尾的单词的所在行数据grep 'u\>' grep.txt
含有连续的重复2次的l字母所在行数据