Linux基础第2弹
Posted buling_buling_
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了Linux基础第2弹相关的知识,希望对你有一定的参考价值。
Linux文件与目录
一、文件的时间、隐藏属性及特殊权限
1、 文件的时间
1 文件的三个时间(ACM)
(1)atime :access time (内容被取用时(打印查看等操作),更新这个读取时间)
(2)ctime :status/change time ;(权限、属性所有者改动时,更新的时间)
(3)modify time(内容数据改动时,更新这个时间)注:通过“ ls -la ”中看到的那个时间
(4)通过“ stat file ”命令可以看到三个时间
2 修改文件的时间与新建文件
touch [options] <file>
touch filename //文件不存在时,会自动创建;文件存在时,将ACM统一为当前时间
【optios】:
-a | 仅修改访问时间 |
---|---|
-m | 仅修改mtime |
-r | 将第一个文件的时间应用到第二个文件上 |
2、 文件的隐藏属性
1 查看文件的隐藏属性
lsattr [options] <file_or_dir>
【options】:
-a | 打印隐藏文件的隐藏属性 |
---|---|
-d | 如果是目录仅打印目录信息 |
-R | 递归 |
2 修改文件的隐藏属性
chattr [+ - =] [options] <file_or _dir>
【options】:
A | 不修改atime |
---|---|
S | 同步写入 |
a | 只能追加数据 |
c | 自动压缩解压 |
d | 不会被dump程序备份 |
i | 不能删除、修改、建立连接 |
s | 文件删除时,直接从磁盘删除(比" rm"还要狠) |
u | 文件删除时,数据内容存在磁盘 |
3、 文件的特殊权限(多用户合作时用的多)
SUID | set_uid | 用户在执行该程序时获取程序所有者权限 |
---|---|---|
SGID | set_gid | 用户在该目录里,有效组变成所属组 |
SBID | sticky bits | 在该目录下,用户只能删除自己创建的文件 |
二、命令及文件的定位查找
1、 which(寻找可执行文件)
“which filename”
查找PATH路径下所有的可执行文件
2、 whereis(寻找特定文件)
whereis [options] <file_or_dir>
【options】:
-b | 找二进制文件 |
---|---|
-m | 在manual路径下的文件 |
-s | source源文件 |
-u | 其他文件 |
3、 locate(搜索文件(可部分查找)(模糊定位))
locate 【options】 <keywords>
注意:当你新建一个文件时,需要执行命令“ sudo uodatedb ”之后,才能locate该文件
4、 find(多样化高级查找)
find [path] [options] [action]
1 与时间相关的参数
【options】:-mtime
n | n天之前的”一天之内“修改的文件 |
---|---|
-n | n天之内的包含n,修改的文件 |
+n | n天之前,不包含n,修改的文化 |
注意:三者互不重叠
【options】:–newer file : 比file还要新的文件
2 与用户或用户组相关的参数
-uid n | 用户uid 为n |
---|---|
-gid n | 群组gid为 n |
-user name | 用户名为 name |
-group name | 群组名为name |
nouser | 、文件所有者不存在 |
nogroup | 文件所有组不存在 |
这里因为用户名为“wudi”与对应的”uid“是一致的所以找到的结果是一样的。
3 与文件权限及名称相关的参数
-name filename | 文件名为filename |
---|---|
-size [+ -] SIZE | 查找比SIZE大或者小的文件 |
-type TYPE | f b c d l s p |
找到文件夹中以" .txt "结尾的并且大小大于0的文件
随堂练习
1、求指定后缀名的文件总个数的命令:
find . -name "*.cpp" | wc -l//求当前目录下所有以.cpp结尾的文件的总个数
2、求指定目录下.cpp文件代码总行数以及单个文件的行数?
find . -name "*.cpp" | xargs wc -l //求当前目录下所有以.cpp结尾的代码总行数及单个文件行数
3、求所有c、cpp、sh、h文件个数
find . -name "*.c" -o -name "*.cpp" -o -name "*.sh" -o -name "*.h" | wc -l //-o起连接作用
4、求所有c、cpp、sh、h文件代码总行数及单个文件行数
find . -name "*.c" -o -name "*.cpp" -o -name "*.sh" -o -name "*.h" |xargs wc -l //-o起连接作用
5、 统计当前文件夹下文件的个数
ls -l |grep "^-" | wc -l //目录个数的话为”^d“
6、 统计当前文件夹下文件的个数(包括子文件夹里的)
ls -lR |grep "^-" | wc -l
以上是关于Linux基础第2弹的主要内容,如果未能解决你的问题,请参考以下文章
[vscode]--HTML代码片段(基础版,reactvuejquery)