在linux系统里,不像windows那些一些都封装成图形界面了,linux中,一切皆文件,一切皆命令,所有的操作都离不开命令和文件,在这里,总结一些和文件和目录相关的知识。

最常见的文件和目录的操作就是增(新建),删(删除),改(修改名字,内容),查(查看内容,查看目录结构)了,除此之外还会涉及到文件和目录的权限,文件目录的压缩解压,文件的搜索,

新建 touch mkdir

一般新建文件命令是touch,新建目录的命令是mkdir ,但是还有其他一些方式也可以达到这个效果。

新建单个文件

touch test.txt
echo > test1.txt #echo空到一个文件也可以创建一个新文件

批量新建多个文件

touch 1.txt 2.txt 3.txt
mkdir 1.txt 2.txt 3.txt

#命令行用for循环去批量新建test-1.txt -test-10.txt

for i in {1..10};do touch test-$i.txt;done 


同理文件可以换成目录

for i in {1..10};do mkdir test1-$i;done 

当新建的目录是多层的时候就需要用mkdir -p 参数去创建

mkdir -p /tmp/a/b/c

删除文件目录 rm rm -rf

rm 这个命令是一个非常危险的命令,rm -rf 是不带提示的强制删除,所以在日常操作时,一定要再三确认,所以可以用rm 就不要用rm -rf,rm 命令是支持正则匹配的

rm -rf test.txt
mv test1.txt /dev/null #/dev/null/ >>就把他当做linux环境下的类型windows系统的回收站把
rm -rf ./*.txt
rm -rf ./1*.txt

修改文件内容或者目录名字

文件

修改文件内容的需要用到linux体系里的文档编辑器,这里是列举两个常用的,vi vim ,yum仓库还有很多其他优秀的编辑器 vi
不需要安装,一般系统都默认自带,vim 有些迷你,精简版没有安装需要自行安装

yum whatprovides vim

找到包名手动安装

yum -y install vim-enhanced-7.4.629-7.el7.x86_64

这里着重讲一下vim,这个会用,一般vi也会用

vim有四个模式

一般模式,默认使用vim就是进入这个这个模式,可以对文件内容的复制删除粘贴等

牢记一点,只有一般模式才可以和其他模式之间切换,其他模式之前不能相互切换

这里列举一些一般模式下常用的操作按键:

dd删除当前光标处1行
10dd删除光标处起往下10行
yy复制光标处一行
8yy复制8行
p在光标处下放一行粘贴DD或者YY的内容
u撤销文档改动,按一次撤销一次操作,一直按可以回到最初未改动的状态
gg光标移动到文件内容第一行
G光标移动到文件内容的最后一行

编辑模式:用于对文件内容的编辑,即键盘输入那些

一般按i 进入编辑模式即可

i,I进入插入模式,i为从目前光标所在处插入。I为在目前所在行的第一个非空格字符处开始插入。
a,A进入插入模式。a为从目前光标所在处的下一个字符处开始插入。A为从所在行的最后一个字符处开始插入。
o,O进入插入模式。o为在下一行插入。O为在上一行插入。
r,R进入替换模式。r只替换光标所在那个字符一次。R会一直替换光标所在字符,直到按下Esc键。
【ESC按键】退出编辑模式,进入一般模式

命令模式: 文件保存、退出、查找与替换、显示行号、paste模式等等

一般模式下按/或者: 进去命令模式

列举命令模式一些常用的操作

列举命令模式一些常用的操作
w仅保存修改的文件,不退出vim界面
wq保存并退出vim界面 ,修改完用这个
wq!强制保存退出
q直接退出vim界面,如果有修改文件内容,切记先保存,
q!强制退出
/str在内容里搜索str关键字,n键匹配光标处向下一个
?str在内容里搜索str关键字,n键匹配光标处向上一个
:n,ms/str1/str2/g匹配n-m行之间,把str1替换成str2,不加g就只是替换匹配到的第一行
:1,$s/str1/str2/g匹配所有行,执行关键字的替换
:set nu在每行行首显示行号
:set nonu取消行号

视图模式:

在一般模式下,直接按小v,进入可视化模式,使用方向键↑ ↓ ←
→选择要复制的内容,然后按y键,移动光标,停在需要粘贴的位置,按p键进行粘贴操作
一般用作加注释和去注释

目录

涉及到目录的修改,就只有一个名字和权限,权限放到后面说
mv test test1 #即可实现目录改名操作

查看文件内容

查看文件内容是操作linux系统很常用的一个操作,不管是看配置文件,系统信息,看日志,该程序配置文件等,这里列举一些常用的查看一个文件内容的方式

vim cat tail more

vim test.txt ,看完q退出即可
cat test.txt |grep "str" # 最常规的查看文件内容的命令
head -100 test,txt 查看文件的前100行
tail -10 test,txt 查看文件的后10行
tail -100f test.txt 展示文件内容最后100行,并在当前命令行动态展示文件内容,多用于查看日志
more test.txt 像看小说那样看文本内容,空格键向下翻阅

文件和目录的搜索

这里介绍一个find命令
可以搜索系统里你想要查看的文件目录,提供非常丰富的条件限制
基础命令格式

find +【搜索的范围,即目录,如/opt/ 】+ 参数(可以是文件的正则名字,文件的类型,文件的大小,文件的日期,文件的所有者等等)

按文件名字 name

find /etc -name   *.conf  #搜索/etc/ 下 以.conf结尾的文件
find /etc -name  test.* #搜索/etc/ 下 以test开头的文件

按文件类型来查询 type
常见的类型 文件:f 目录:d 链接:l 套接字:s

find /tmp/ -type f #查找/tmp/ 下 类型为文件的所有内容

按文件的大小查找 size

#查找/tmp/ 下大于20M的所有文件内容
find /tmp/ -size +2M
#查找/tmp/ 下小于100k的所有文件内容
find /tmp/ -size -100k

按文件的更新时间查询 ctime cmin
ctime 单位为天 cmin 单位是分钟
一般用来排查某时间段内被修改过的时候,或者结合exec 来删除旧的过期文件(如删除日志

ctime +10 #距现在10天以上,表示10天前
ctime -10 #距现在10天以下,表示10天内

#查找10天以前的内容
find /nginx/log/ -ctime +10
#和exec 结合使用,
find 目录 参数 -exec 要执行的命令 {} \;

#删除10天以前的日志文件
find  /opt/nginx/log/ -type f  -ctime +10 -exec  rm -rf {} \;
#给/tmp/下的sh脚本文件添加执行权限x
find /tmp/ -name *.sh -type f -exec chmod +x {} \;

下面是不太常用的搜索条件

按文件所有者来查询

find /home/ -user test

按文件所属组查询

find /home/ -group test

按文件权限去操作

搜索权限为404的文件
find /tmp/ -perm 404 

文件和目录权限的修改

chown 用于修改文件的所属者或者所属组 (修改文件是属于谁的,属于哪个组的)

在 linux 中的每个用户必须属于一个组,不能独立于组外。在 linux 中每个文件有所有者、所在组、其它组的概念。

所有者(u) :一般为文件的创建者,谁创建了该文件,就天然的成为该文件的所有者,用 ls ‐ahl 命令可以看到文件的所有者 也可以使用chown 用户名 文件名来修改文件的所有者 。

文件所在组(g) :当某个用户创建了一个文件后,这个文件的所在组就是该用户所在的组用 ls ‐ahl命令可以看到文件的所有组也可以使用 chgrp 组名 文件名来修改文件所在的组。

其它组(o):除开文件的所有者和所在组的用户外,系统的其它用户都是文件的其它组。 我们再来看看如何修改文件/目录的权限。

#把/tmp/test.txt文件的所有者改为root,所属组改为jay
chown root:jay /tmp/test.txt
#用 . 间隔也可以
chown root.jay /tmp/test.txt
#单独修改属者或者属组
chown root: /tmp/test.txt
chown :jay /tmp/test.txt


一般会搭配 -R去递归使用

#把/tmp/test/  所有文件目录所有者和属组改为root:root 
chown -R root:root /tmp/test/  

chmod 用于修改文件所属者,组的权限(修改所有者,组具体拥有哪些权限,读写执行等)
上面的chown是规定了文件目录属于谁,现在chmod来规定你具体拥有文件的哪些权限
ll 可以查看文件目录的权限 (ls -l
u=所有者的权限,g=搜有组的权限,o=其他组的权限,如果不加表示三者同时

chmod +x /tmp/tets.txt  #三者都加x权限
chmod u+x /tmp/tets.txt #只有所有者才加x权限

文件内容的操作

当你以后经常需要用脚本去处理一些和文件内容相关的内容时,sed 和ask是非常方便快捷的编辑工具

sed & awk

跳转

更多推荐

linux文件及目录操作汇总