文件管理基础命令二

文件管理基础命令二

本实验主要介绍了Linux中文件管理指令,通过本实验的学习,你能够掌握文件复制,粘贴指令,掌握如何新建一个文件,如何正确删除一个文件。

实验简介

实验所属系列:Linux操作系统

实验对象: 本科/专科信息安全专业

相关课程及专业:计算机基础,计算机网络

实验时数(学分):2学时

实验类别:实践类

预备知识

关于相对路径和绝对路径

在做以下实验之前,你必须先了解一下所谓的“路径(PATH)”。那什么是相对路径,什么是绝对路径呢?

绝对路径:路径的写法 ,一定由根/写起,例如:/usr/share/doc这个目录

相对路径:不是由根/写起,例如由/usr/share/doc到/usr/share/man下面去时,可以这样写:cd …/man;这就是相对路径的写法,相对路径就是指“相对当前工作目录的路径”

相对路径的用途:当你的目录名设置的很长,写绝对路径的话,很不方便,如果要切换目录的话,最好就是使用相对路径

绝对路径的用途:当你编写shell脚本或者写软件调用文件的时候,务必使用绝对路径,这样保证路径不会错。

在linux中,命令的很多参数都是一样的,起到的作用也是一样的。没错了。在Linux命令里面,很多参数都是通用的,在这个命令上能用,在另外一个命令上也能用,所有,要学会活学活用哦~~

实验目的

  1. 掌握文件复制,粘贴指令

  2. 掌握如何新建一个文件

  3. 掌握如何正确删除一个文件

实验环境

网络拓扑见下图:

CentOS6.5

CentOS6.5 试验台

实验步骤一

Linux文件列表命令 :ls

ls:list ,列出目录内容

用法:ls [-aAdhl] //ls 的参数很多,这里介绍常用的几种

不加参数,直接 ls ,可列出目录的内容,包括文件和子目录的名称。

-a :列出全部的文件,包括隐藏的目录和隐藏的文件(以.开头的文件)

-A :列出全部的文件,包括隐藏的目录和文件(但不包括 . 与 … 这两个目录)

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

-h :将文件容量以人类较易读的方式(例如GB、KB等) 列出来

-l :列出文件并显示文件的属性和权限等信息

1

ls -a :有没有发现,出来很多开头是 . 的文件,这些就是隐藏文件啦!看到没有,. 和 … 也被列出来了噢!!

2

ls -A:看到没有!,没有 . 和 … 这两个目录哦!!
3
ls -d :列出目录本身,列出/etc 这个目录本身,不会显示/etc这个目录里面的数据

4

ls -h :很容易就看懂文件有多大了。通常和-l 一起用

5

ls -l :列出文件并显示文件的属性和权限等信息,在上图已经看到了,会显示文件的属性和权限等信息,通常和其他参数一起使用,比如ls -ld 、ls -lh

实验步骤二

Linux文件拷贝命令:cp常见用法

cp:copy 拷贝

用法:cp [-adfilprsu] 源文件 目标

不加参数,直接 cp 源文件 目标 (目标可以是文件名也可以是目录名)

-a :尽可能将档案状态、权限等资料都照原状予以复制。

-r :若 source 中含有目录名,则将目录下之档案亦皆依序拷贝至目的地。

-f :若目的地已经有相同档名的档案存在,则在复制前先予以删除再行复制。

在默认的条件中,cp的源文件与目的文件的权限是不同的,目的文件的所有者会是执行命令的用户。

-u :差异复制,常用在备份里面

例:以root身份,将/etc/passwd文件复制到/tmp下

6

变换目录到/tmp,并将/var/log/wtmp 复制到/tmp观察属性

7

#注意,在不加任何选项的情况下,文件的某些属性/权限会改变

那如果你想要将文件的所有特性都复制过去怎么办,可以加一个 –a 参数,如下:

8

默认情况下,cp的来源档和目的档的权限是不同的,目的档的拥有者通常会是指令操作者本身,就如上面的看到的一样,由于我是root身份,因此复制过来的档案拥有者和群组就变成root所有了。

例2:将/etc/这个目录下的所有内容到/tmp底下

9

例3:cp -f 参数

若目的地已经有相同档名的档案存在,则在复制前先予以删除再行复制,其实就是force的意思,强制复制,默认是需要询问的

10
11

例4:cp -u参数:

cp -u用于增量备份,当你做备份的时候,cp -u只会复制那些有新增或者已经有变化的文件,相同属性并存在的文件不会再重新复制,大大的提供了备份速度。

这里为了测试,我会先在/tmp/test 目录下新建1.txt,2.txt两个文件,将其复制到/tmp/123目录中,然后我再次在/tmp/test 目录下新建3.txt文件,再次复制到/tmp/123下面,我分别用不加 –u参数和用-u参数做对比。

12
13
14
不知道你看明白没有,当我没用-u参数,cp会将之前的文件从新复制,所有它询问我是否覆盖之前的文件,而当我加了 -u 参数之后,cp只复制了新增的 3.txt 过去,因为之前目标目录没有3.txt文件,所以也没有询问是否替换。

实验步骤三

文件移动命令 :mv

mv:move 移动文件,还有重命名的作用

用法:mv [-fiu] source destination

-f:强制移动,不会出现警告信息

-i:互动模式,移动之前询问你

-u:目标存在的时候,只有source比较新才会更新

用法和cp命令差不多,区别在于一个是复制,一个是剪切。这里演示一下重命名的作用:

切换到/tmp 目录下,用touch新建一个test.txt,然后用mv 重命名为456.txt

15
怎么样,很简单吧,不需要想windows下面那样,点击鼠标,点过来点过去的。

文件或者目录删除命令:rm

rm:remove 移除

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

不加参数,直接用rm 文件,可以删除文件

-f:强制删除,不会出现警告信息

-i:互动模式,删除之前询问你

-r:递归删除,最常用在目录的删除,很危险的参数

例:删除我们之前在/tmp/test目录下新建的1.txt ,2.txt,3.txt 和/tmp/123目录,分别用以上不同的参数

16
17

18
当加入-f 参数,不会有任何提示。

注意:rm -rf 是很危险的参数,慎用!!切记切记!

touch命令:严格来说,它是用来修改文件的时间记录的。

这里我们可以用它来创建一个空文件。关于修改文件时间的用法,我们会在以后的教程里面解释!
19

实验结果图

实验步骤一
20

实验步骤二
21

实验步骤三
22

分析与思考

1. 请上网查询资料,除了mv可以对文件重命名之外,还有哪些命令可以对文件重命名?
还可以使用raname命令。
rename命令可以用字符串替换的方式批量改变文件名。
2. 如果有一批文件,都是以log开头的,log001.txt, log002.txt … 一直到log100.txt,现在想要把这批文件的log全部替换为history,该怎样批量重命名呢?
rename log history log*
3. 请自行查阅资料,了解文件查找命令“find”的用法,并找出/etc下面大小介于100k到200k之间的文档。命令该如何写?
find /etc -size +100K -size -200

补充 rename命令

一、命令
1.1 语法
rename(参数)
1.2 参数

原字符串:将文件名需要替换的字符串;
目标字符串:将文件名中含有的原字符替换成目标字符串;
文件:指定要改变文件名的文件列表。

二、示例
2.1 重命名
**将main1.c重命名为main.c**
rename main1.c main.c main1.c
2.2 rename支持通配符
?  可替代单个字符
*  可替代多个字符
[charset]  可替代charset集中的任意单个字符

文件夹中有这些文件foo1, …, foo9, foo10, …, foo278

如果使用rename foo foo0 foo?,会把foo1到foo9的文件重命名为foo01到foo09,重命名的文件只是有4个字符长度名称的文件,
文件名中的foo被替换为foo0。
如果使用rename foo foo0 foo??,foo01到foo99的所有文件都被重命名为foo001到foo099,只重命名5个字符长度名称的文件,
文件名中的foo被替换为foo0。
如果使用rename foo foo0 foo*,foo001到foo278的所有文件都被重命
名为foo0001到foo0278,所有以foo开头的文件都被重命名。
如果使用rename foo0 foo foo0[2]*,从foo0200到foo0278的所有文件都被重命名为foo200到foo278,文件名中的foo0被替换
为foo。
2.3 rename支持正则表达式
# 把文件名中的AA替换成aa
rename "s/AA/aa/" * 

# 把.html 后缀的改成 .php后缀
rename "s//.html//.php/" * 

# 把所有的文件名都以txt结尾
rename "s/$//.txt/" *

# 把所有以.txt结尾的文件名的.txt删掉
rename "s//.txt//" *

补充 find命令

Linux find 命令用来在指定目录下查找文件。任何位于参数之前的字符串都将被视为欲查找的目录名。如果使用该命令时,不设置任何参数,则 find 命令将在当前目录下查找子目录与文件。并且将查找到的子目录和文件全部进行显示。
语法

find   path   -option   [   -print ]   [ -exec   -ok   command ]   {} \;

参数说明 :
find 根据下列规则判断 path 和 expression,在命令列上第一个 - ( ) , ! 之前的部份为 path,之后的是 expression。如果 path 是空字串则使用目前路径,如果 expression 是空字串则使用 -print 为预设 expression。

expression 中可使用的选项有二三十个之多,在此只介绍最常用的部份。

-mount, -xdev : 只检查和指定目录在同一个文件系统下的文件,避免列出其它文件系统中的文件

-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 的文件。

d: 目录

c: 字型装置文件

b: 区块装置文件

p: 具名贮列

f: 一般文件

l: 符号连结

s: socket

-pid n : process id 是 n 的文件

你可以使用 ( ) 将运算式分隔,并使用下列运算。

exp1 -and exp2

! expr

-not expr

exp1 -or exp2

exp1, exp2

实例

第一部分:根据文件名查找
 
1、在当前目录查找名称为test的所有文件:find test
 
2、在主目录下查找名称为test的所有文件:find /home –name test
 
3、在主目录下查找test的所有文件,且不分区大小写:find /home -iname test
 
4、查找名称为test的所有目录:find / -type d -name test
 
5、当前目录查找名为test.php的所有php文件:find -type f -name test.php
 
6、查找当前目录中所有php文件:find -type f -name '*.php'
 
第二部分:根据权限查找
 
7、查找权限为777的所有文件:find -type f -perm 0777 -print
 
8、查找没有777权限的文件:find -type f ! -perm 777
 
9、查找有特殊权限2755的SGID文件:find -perm 2755

 
10、查找有特殊权限1551的所有SBIT的文件:find –prem 1551

 
11、查找有特殊权限SUID的所有文件:find / -perm /u=s
 
12、查找有特殊权限SGID的所有文件:find / -perm /g=s
 
13、查找所有只读文件:find / -perm /u=r
 
14、查找所有可执行文件:find / -perm /a=x
 
15、查找所有777权限的文件,并使用chmod将其设置为644:find -type f -perm 0777 -print -exec chmod 644 {} \;
 
16、查找并删除单个文件:find -type f -name 'test.php' -exec rm -f {} \;
 
17、查找并删除多个文件:find -type f -name '*.php' -exec rm -f {} \;
 
18、查找所有空文件:find / -type f -empty
 
19、查找所有空目录:find / -type d -empty
 
20、查找所有隐藏文件:find / -type f -name '.*'
 
第三部分:根据所有者和组查找
 
21、查找所有者为root的所有aaa文件:find / -user root -name 'aaa'
 
22、查找属于root组的所有文件:find / -group root
 
第四部分:根据日期和时间查找
 
23、查找30天前修改的所有文件:find / -type f -mtime +30
 
24、查找最后10-20天修改的所有文件:find / -mtime +10 -mtime -20
 
25、查找最近1小时内修改的所有文件:find / -mmin -60
 
26、查找30天前访问的所有文件:find / -type f -atime +30
 
27、查找最近30天访问的所有文件:find / -type f -atime 30
 
28、查找最近1小时内访问的所有文件:find / -type f -amin -60
 
第五部分:根据大小查找
 
29、查找大小为50MB的所有文件:find / -size 50M
 
30、查找大于50M且小于100M的所有文件:find / -size +50M -size -100M
 
31、查找大于50M的所有文件并删除:find / -size +50M -exec rm -rf {} \;
 
32、查找大于10M的所有.mp3文件并删除:find / -type f -name '*.mp3' -size +10M -exec rm -rf {} \;

其他文章传送处

文件管理基础命令一
获取帮助命令
了解你的系统
Linux档案权限篇之一
Linux命令进阶篇之一
Linux命令进阶篇之二

  • 1
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值