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 {} \; // 搜索到文件并强制删除