shell编程——文件的操作(一)

1    列出文件

ls -l

第一列为文件的文件类型和访问权限,其中第一个字符为文件的类型,如果为常规文件,则使用一个连字符-表示。后面9个字符3个一组,分别表示文件所有者、同组用户,以及其他组用户对于该文件的访问权限。

第二列为硬链接数

第三列为文件所有者

第四列为所有者的主用户组

第五列为文件的大小

第六列为文件的最后访问时间

第七列为文件名


隐藏文件的文件名以圆点.开头,在默认情况下,ls命令并不列出隐藏文件。使用

ls -la 可以列出所有文件包括隐藏文件

2    文件类型

普通文件:文本文件和二进制文件两类

目录:目录的作用是组织和访问其他文件

伪文件:最重要的伪文件是设备文件,设备文件是物理设备在系统中的内部表示,如键盘、鼠标、显示器等。除了设备文件还有命名管道和proc文件

3    文件权限

r表示读取权限,拥有该权限的用户可以使用cat即more等命令查看文件内容

w表示写入权限,用户可以对文件进行编辑修改

x表示执行权限

第1组权限表示文件的所有者

第2组权限表示文件的组所有者,即用户组的所有用户

第3组表示其他用户,除文件所有者和文件的用户组成员之外的其他用户

4    find命令及语法

find命令的基本思想就是搜索一个或多个目录数,根据用户指定的测试条件,查找符合特定标准的文件。当查找完之后,find命令对查找到的文件执行指定的操作。

find path test action

path 要搜索的路径

test测试条件,多个用空格隔开

action对于搜索结果要执行的操作

eg.

find / -name ls -print

搜索文件名为ls的命令并打印

没有指定测试条件和操作,表示将所有的文件打印出来

find . -name ".*sh"

多个路径用空格隔开

5    find命令的测试条件

-name -iname 从文件名进行测试

-type -perm -user -group -size -empty从文件的特征方面进行测试

-type:f  普通文件  d  目录

eg.

files=`find /etc -type f -print | wc -l`

echo "there is $files in /etc"

-name -iname  通过文件名搜索文件,后者不区分大小写

file=`find /etc -name httpd.conf -print`

head -5 $file

//    搜索到文件的前5行输出到屏幕


为了使搜索结果更加完整,用户可以使用通配符:

?表示匹配任意一个单个字符。

*表示匹配0或者多个任意字符

[]表示匹配其中的任意一个字符,如果方括号中是一段连续的字母或者数字,则可以使用连字符-来简化书写方法。

在使用通配符的时候,注意要使用引号将其引用起来。

eg.

find /etc -name "httpd.conf*" -print

find /etc -name "data[abc]" -print

find /bin -type f -name ls  //    同时使用多种测试命令

6    find命令:使用!运算符对测试求反

加在任何测试条件的前面,表示其后测试的相反条件

!左右各留一个空格

另外,为了避免shell解释!符号,用户需要用单引号或者反斜线将其引用起来

find . -type f \! -name "*.jpg" -print  //  搜索当前目录中除jpg文件之外的普通文件

或:find . -type '!' -name "*.jpg" -print

7    find命令:处理文件权限错误信息

find命令的错误消息是写入到标准错误的,通常情况下是输出到屏幕上。因此用户可以通过标准错误重定向到/dev/null来达到将错误消息直接丢弃的目的。

其中/dev/null是一个空设备,任何写入到该设备的数据都将被直接丢弃

eg.

find / -name httpd.conf 2> /dev/null

2是一个描述文件,表示标准错误,>表示输出重定向

8    find命令:动作

-print    默认动作,搜索结果写入到标准输出

-fprint file    将搜索结果写入到文件

-ls    以详细格式显示搜索结果

-fls file    将搜索结果写入file中

-delete    将搜索到的文件删除

-exec command {} \;    查找并执行命令

-ok command {} \;    查找并执行命令,但需要用户确认

最后的分号需要反斜线来转义,不能单独使用分号;另外分号和前面的大括号之间有一个空格。

eg.

find ./tmp -name "*.php" -exec rm -f {} \;      //    搜索到文件并强制删除

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值