您的位置:首页 > 运维架构 > Linux

Linux文件管理(2)——文件操作

2017-05-13 23:53 127 查看
1.ls

语法:ls [-aAdfFhilnrRSt] 目录名称

功能:列出指定目录中的文件名和子目录名。当无子目录名时,列出当前目录中的文件名和子目录名。

选项:

-a :全部的文件,连同隐藏项( 开头为 . 的文件) 一起列出来(常用)

-d :仅列出目录本身,而不是列出目录内的文件数据(常用)

-l :长数据串列出,包含文件的属性与权限等等数据;(常用)按长格式列出文件及目录信息,包括文件类型标识,权限,链接数,文件主名,文件组名,字节数,日期,文件名。

-R 递归处理,显示包括子目录下所有文件

-t 按文件生成日期排序。

-F 显示文件类型

-s或–size 显示文件和目录的大小,以区块为单位。

-S 用文件和目录的大小排序。

2.cd

语法:cd [相对路径或绝对路径]

功能:改变当前工作目录

注意:目录名选项有:

(1) 目录名,转到当前目录下的子目录。

(2) .. 表示转到当前目录的父目录。

(3) / 表示转到根目录。

(4) 没有选项时,转到用户的主目录。

3.pwd

语法:pwd [-P]

功能:显示用户当前工作目录的绝对路径。

选项:-P :显示出确实的路径,而非使用连结 (link) 路径。

4.mkdir

语法:mkdir [-mp] 目录名称

功能:创建新目录

选项:

-m<目录属性>或–mode<目录属性> :建立目录时同时设置目录的权限。

-p :递归创建多层目录(包含上一级目录)。

范例:创建权限为rwx–x–x的目录

[root@www tmp]# mkdir -m 711 test2
[root@www tmp]# ls -l
drwx--x--x  2 root  root 4096 Jul 18 12:54 test2


上面的权限部分,如果没有加上 -m 来强制配置属性,系统会使用默认属性。

5.rmdir

语法:rmdir [-p] 目录名称

功能:删除不存在子文件或子目录的空目录。

选项与参数:-p :连同上一级『空的』目录也一起删除

注意:删除子目录时,要求被删除的目录中不存在文件或子目录,否则无法删除。

6.cp

语法:

[root@www ~]# cp [-adfilprsu] 来源档(source) 目标档(destination)

[root@www ~]# cp [options] source1 source2 source3 …. directory

功能:把一个文件的全部内容拷贝到另一个文件,也可将一个或多个文件拷贝到另一个目录中。

选项与参数:

-a :相当於 -pdr 的意思,至於 pdr 请参考下列说明;(常用)

-d :若来源档为连结档的属性(link file),则复制连结档属性而非文件本身;

-f :为强制(force)的意思,若目标文件已经存在且无法开启,则移除后再尝试一次;

-i :若目标档(destination)已经存在时,在覆盖时会先询问动作的进行(常用)

-l :进行硬式连结(hard link)的连结档创建,而非复制文件本身;

-p :连同文件的属性一起复制过去,而非使用默认属性(备份常用);

-r :递归持续复制,用于目录的复制行为;(常用)对子目录下所有文件进行拷贝。

-s :复制成为符号连结档 (symbolic link),亦即『捷径』文件;

-u :若 destination 比 source 旧才升级 destination !

7.rm

语法:rm [-fir] 文件或目录

功能:删除指定的文件或一个目录中的文件。

选项与参数:

-f :就是 force 的意思,忽略不存在的文件,不会出现警告信息;

-i :互动模式,在删除前会询问使用者是否动作

-r :递归删除!将删除指定目录的所用文件,包括目录名。

NO1. 删除当前目录的文件
[root@rehat root]# rm test.txt
NO2. 强制删除当前目录的文件,不弹出提示
[root@rehat root]# rm -f test.txt
NO3. 强制删除整个目录,包括目录与文件全部删除,需要管理员权限
[root@rehat root]# rm -r -f test


8.mv

语法:

[root@www ~]# mv [-fiu] source destination

[root@www ~]# mv [options] source1 source2 source3 …. directory

功能:改变文件或目录的名字,或把一些文件移到另一目录下。

选项与参数:

-f :force 强制的意思,如果目标文件已经存在,不会询问而直接覆盖;

-i :若目标文件 (destination) 已经存在时,就会询问是否覆盖!

-u :若目标文件已经存在,且 source 比较新,才会升级 (update)

注意:当filename1更名为filename2时,若filename2已经存在,则filename2的内容将被filename1覆盖。

NO1. 若移动目标文件已存在,要在移动之前,先备份原来的目录文件
[root@rehat root]# mv -b test.txt test2/
这样在 test2 下将有两个文件 test.txt 及 text.txt~
其中 test.txt~ 是备份文件,test.txt是新的文件
NO2. 若移动目标文件已存在,但不想弹出是否覆盖的提示,直接覆盖
[root@rehat root]# mv -f test.txt test2/
NO3. 当源与目标都拥有同一个文件,若源文件比目标新则移动,否则不移动
[root@rehat root]# mv -u test.txt test2/
NO4. 更改文件名称
[root@rehat root]# mv test.txt test2.txt
NO5. 更改目录名称
[root@rehat root]# mv /test2 /test2_2


9.file

格式:file filename/directory

功能:显示文件或目录的类型。

10.touch

格式:touch filename

功能:改变文件的日期,不对文件的内容做改动,若文件不存在则建立新文件。

-a或–time=atime或–time=access或–time=use  只更改存取时间。

11.ln

命令:ln (link)

格式:ln [option] filename linkname

ln [option] directory pathname

功能:为文件或目录建立一个链。其中,filename和directory是源文件名和源目录名;linkname和pathname分别表示与源文件或源目录名相链接的文件或目录。

选项:-s 为文件或目录建立符号(软)链接。不加-s表示为文件或目录建立硬链接

-f 强制创建链接

-n 如果链接文件已存在则不创建

注意:链接的目的在于,对一个文件或目录赋予两个以上的名字,使其可以出现在不同的目录中,既可以使文件或目录共享,又可以节省磁盘空间。

硬链接和软链接的区别:

(1)硬链接以”.ln”结尾;软链接以“.sln”结尾;

(2)建立新的软链接时为链接申请新的i-node;而硬链接不会;

(3)软链接删除源文件后则链接文件就不能用了;而硬链接可以;

(4)建立软链接会为新的链接申请新的数据区来存放源文件名,而硬链接不会;

(5)建立软链接相当于创建快捷方式;

(6)软链接的源文件可以是目录,而硬链接不可以。

12. locate

格式:locate expression

功能:查找符合条件的文件或目录

13.find

格式:find pathname [option] expression

功能:在所给的路经名下寻找符合表达式相匹配的文件。

pathname find命令所查找的目录路径。例如用.来表示当前目录,用/来表示系统根目录。

expression:

-print find命令将匹配的文件输出到标准输出。

-exec find命令对匹配的文件执行该参数所给出的shell命令。相应命令的形式为’command’ {} \;,注意{ }和\;之间的空格。

-ok 和-exec的作用相同,只不过以一种更为安全的模式来执行该参数所给出的shell命令,

在执行每一个命令之前,都会给出提示,让用户来确定是否执行。

选项:

-name 按照文件名查找文件。

-type 按文件类型查找

-size 按大小查找,以block为单位,一个block是512B

-perm 按照文件权限来查找文件。

-prune 使用这一选项可以使find命令不在当前指定的目录中查找,如果同时使用了-depth

选项,那么-prune选项将被find命令忽略。

-user 按照文件属主来查找文件。

-group 按照文件所属的组来查找文件。

-mtime -n +n 按照文件的更改时间来查找文件,-n表示文件更改时间距现在n天以内,+n表示文件更改时间距现在n天以前。

-atime 按最后一次访问时间查找

-nogroup 查找无有效所属组的文件,即该文件所属的组在/etc/groups中不存在。

-nouser 查找无有效属主的文件,即该文件的属主在/etc/passwd中不存在。

-newer file1 ! file2 查找更改时间比文件file1新但比文件file2旧的文件。

条件的逻辑运算符:

逻辑运算符 逻辑意义     举例                 说明
!      非   !-name “*.c” 所有不以.c为扩展名的文件
-o      或   -size +10 -o -links 3 所有大于10block或链接数为3的文件
与   -size +10 -links 3 大于10block且链接数为3的文件


注:上表中的“+10”表示大于10,“-10”表示小于10。

find /temp -name “abc*” -print 在/temp目录下查找文件名以abc开始的文件

find . -name test -print 在当前目录下查找文件名为test的文件

NO1. 查找当前用户主目录下的所有文件
[root@rehat root]# find ~
NO2. 让当前目录中文件属主具有读、写权限,并且文件所属组的用户和其他用户具有读权限的文件;
[root@rehat root]# find . -perm 644 -exec ls -l {} \;
NO3. 为了查找系统中所有文件长度为0的普通文件,并列出它们的完整路径;
[root@rehat root]# find / size 0 -type f -exec ls -l {} \;
NO4. 查找/var/logs目录中更改时间在7日以前的普通文件,并在删除之前询问它们;
[root@rehat root]# find /var/logs -mtime +7 -type f -ok rm -i {} \;
NO5. 为/找系统中所有属于root组的文件;
[root@rehat root]# find / -group root -exec ls -l {} \;
NO6. find命令将删除当目录中访问时间在7日以来、含有数字后缀的admin.log文件
[root@rehat root]# find . -name "admin.log[0-9][0-9][0-9]" -atime -7 -ok rm { } \;
NO7. 为了查找当前文件系统中的所有目录并排序
[root@rehat root]# find . -type d | sort
NO8. 为了查找系统中所有的rmt磁带设备
[root@rehat root]# find /dev/rmt


14.cat

语法:cat [-AbEnTv] filename

功能:由第一行开始显示文件内容

选项与参数:

-A :相当於 -vET 的整合选项,可列出一些特殊字符而不是空白而已;

-b :列出行号,仅针对非空白行做行号显示,空白行不标行号!

-E :将结尾的断行字节 $ 显示出来;

-n :列印出行号,连同空白行也会有行号,与 -b 的选项不同;

-T :将 [tab] 按键以 ^I 显示出来;

-v :列出一些看不出来的特殊字符

注意:当文件内容在屏幕上滚动显示时,可按Ctrl+S键屏幕滚暂停,按Ctrl+Q键继续显示。

15.nl

语法:nl [-bnw] 文件

功能:显示行号

选项与参数:

-b :指定行号指定的方式,主要有两种:

-b a :表示不论是否为空行,也同样列出行号(类似 cat -n);

-b t :如果有空行,空的那一行不要列出行号(默认值);

-n :列出行号表示的方法,主要有三种:

-n ln :行号在萤幕的最左方显示;

-n rn :行号在自己栏位的最右方显示,且不加 0 ;

-n rz :行号在自己栏位的最右方显示,且加 0 ;

-w :行号栏位的占用的位数。

16.more

格式:more filename

功能:按屏幕一屏一屏显示出文件内容

在 more 这个程序的运行过程中,你有几个按键可以按的:

空白键 (space):代表向下翻一页;

Enter:代表向下翻『一行』;

/字串:代表在这个显示的内容当中,向下搜寻『字串』这个关键字;

f:立刻显示出档名以及目前显示的行数;

q:代表立刻离开 more ,不再显示该文件内容。

b 或 [ctrl]-b :代表往回翻页,不过这动作只对文件有用,对管线无用。

17.less

格式:less filename

功能:一页一页翻动,可以往前翻页

: <== 这里可以等待你输入命令!

less运行时可以输入的命令有:

空白键 :向下翻动一页;

[pagedown]:向下翻动一页;

[pageup] :向上翻动一页;

/字串 :向下搜寻『字串』的功能;

?字串 :向上搜寻『字串』的功能;

n :重复前一个搜寻 (与 / 或 ? 有关!)

N :反向的重复前一个搜寻 (与 / 或 ? 有关!)

q :离开 less 这个程序;

18.head

语法:head [-n number] 文件

功能:查看文件前面几行

选项与参数:

-n :后面接数字,代表显示几行的意思

默认情况,显示前面 10 行!若要显示前 20 行,就得要这样:

[root@www ~]# head -n 20 /etc/man.config


19.tail

语法:tail [-n number] 文件

功能:查看文件后面几行

选项与参数:

-n :后面接数字,代表显示几行的意思

-f :表示持续侦测后面所接的档名,要等到按下[ctrl]-c才会结束tail的侦测

-i 显示文件最后 i行。

+i 从文件的第i行开始显示。

默认的情况,显示最后的十行!若要显示最后的 20 行,就得要这样:

[root@www ~]# tail -n 20 /etc/man.config


20.wc

命令:wc (word characters)

格式:wc [option] filename

功能:统计文件中的文件行数、字数和字符数。

选项:

-l 统计文件的行数

-w 统计文件的单词数

-c 统计文件的字符数

注意:若缺省文件名则指标准输入

21.grep

格式:grep [option] pattern filenames

功能:逐行搜索所指定的文件或标准输入,并显示匹配模式的每一行。

选项:

-w 搜索匹配给定模式的字符串

-c 只输出匹配行的计数。

-i 不区分大小写(只适用于单字符)。

-h 查询多文件时不显示文件名。

-l 查询多文件时只输出包含匹配字符的文件名。

-n 显示匹配行及行号。

-s 不显示不存在或无匹配文本的错误信息。

-v 显示不包含匹配文本的所有行。

常用正则表达式:

[^0-9A-Za-z] 对非数字或字母
[0-9]\{2\}-[0-9]\{2\}-[0-9]\{4\} 对日期格式dd-mm-yyyy
[0-9]\{3\}\.[0-9]\{3\}\.[0-9]\{3\}\.[0-9]\{3\} 对IP地址格式nnn. nnn.nnn.nnn


22.sed

sed用“批处理”方式编辑文件。sed是一种流编辑器,它可以对从如管道这样的标准输入接收的数据进行编辑。sed 是基于行的,因此按顺序对每一行执行命令。然后,sed 将其结果写入标准输出(stdout),它不修改任何输入文件。

使用sed在文件中定位文本的方式

x x为一行号,如1
x,y 表示行号范围从x到y,如2,5表示从第2行到第5行
/pattern/ 查询包含模式的行。例如/disk/或/[a-z]/
/pattern/pattern/查询包含两个模式的行。例如/disk/disks
/pattern/,x 在给定行号上查询包含模式的行。如/ribbon/,3
x,/pattern/通过行号和模式查询匹配行。3,/vdu/
x,y ! 查询不包含指定行号x和y的行。1,2 !


sed编辑命令

p 打印匹配行
= 显示文件行号
a \ 在定位行号后附加新文本信息
i \ 在定位行号后插入新文本信息
d 删除定位行
c \ 用新文本替换定位文本
s 使用替换模式替换相应模式
r 从另一个文件中读文本
w 写文本到一个文件
q 第一个模式匹配完成后推出或立即推出
l 显示与八进制ASCII代码等价的控制字符
{ } 在定位行执行的命令组
n 从另一个文件中读文本下一行,并附加在下一行
g 将模式2粘贴到/pattern n/
y 传送字符
n 延续到下一输入行;允许跨行的模式匹配语句


替换命令用替换模式替换指定模式,格式为:

[address [,address]] s/pattern-to-find /replacement-pattern/[g p w n]


s选项通知sed这是一个替换操作,并查询pattern-to-find,成功后用replacement-pattern替换它。

替换选项如下:

g 缺省情况下只替换第一次出现模式,使用g选项替换全局所有出现模式。

p 缺省sed将所有被替换行写入标准输出,加p选项将使- n选项无效。

-n选项不打印输出结果。

w 文件名使用此选项将输出定向到一个文件。

23.awk

格式:awk [-F field-separator] ‘commands’ input-file(s)

awk ‘pattern’ filename
awk ‘{action}’ filename
awk ‘pattern {action}’ filename


功能:在文件或字符串中基于指定规则浏览和抽取信息。

[-F域分隔符]是可选的,因为awk使用空格作为缺省的域分隔符。

awk执行时,其浏览域标记为$1,$2…$n,这种方法称为域标识。用逗号做域分隔,可使用$0,表示所有域。

awk内置字符串函数

gsub(r,s) 在整个$0中用s替代r
gsub(r,s,t) 在整个t中用s替代r
index(s,t) 返回s中字符串t的第一位置
length(s) 返回s长度
match(s,r) 测试s是否包含匹配r的字符串
split(s,a,fs) 在fs上将s分成序列a
sprint(fmt,exp) 返回经fmt格式化后的exp
sub(r,s) 用$0中最左边最长的子串代替s
substr(s,p) 返回字符串s中从p开始的后缀部分
substr(s,p,n) 返回字符串s中从p开始长度为n的后缀部分


awk输入要注意的错误

1)确保整个awk命令用单引号括起来。

2)确保命令内所有引号成对出现。

3)确保用花括号括起动作语句,用圆括号括起条件语句。

为使一域号匹配正则表达式,使用符号‘~’后紧跟正则表达式,也可以用if语句。

awk中if后面的条件用()括起来。

24.sort

sort命令的一般格式为:

sort -cmu -o output_file [other options] +pos1 +pos2 input_files

下面简要介绍一下sort的参数:

-c 测试文件是否已经分类。

-m 合并两个分类文件。

-u 删除所有复制行。

-o 存储sort结果的输出文件名。

其他选项有:

-b 使用域进行分类时,忽略第一个空格。

-n 指定分类是域上的数字分类。

-t 域分隔符;用非空格或tab键分隔域。

-r 对分类次序或比较求逆。

+n n为域号。使用此域号开始分类。

n n为域号。在分类比较时忽略此域,一般与+ n一起使用。

post1 传递到m,n。m为域号,n为开始分类字符数;例如4,6意即以第5域分类,从第7个字符开始。

25.cmp

命令格式

cmp [-ls] 文件名1 文件名2

功能:比较两个文件,这两个文件可以是文本文件也可以是非文本文件。cmp命令会显示两个文件第一次数据不同的位置。若两个文件内容相同,则不显示任何信息。

参数说明

-l 显示每个不同之处不同字节的内容

-s 只显示cmp命令的返回值(相同为0,不相同为1)
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签:  linux