Linux文件管理及其常用命令总结

  • Post author:
  • Post category:linux




1. 文件命名规则

理论上除了“/”字符之外,所有的字符都可以使用,但一般不建议在目录名和文件名中使用特殊字符,如<、>、?、*等。一般习惯的命名规则如下:

  • 由于Linux严格区分大小写,所以尽量都用小写字母;
  • 如果必须对文件名进行分割,建议使用”_”;
  • 文件扩展名的使用尽量规范,如1.log文件就应该表示一个日志文件。

另外,需要补充的是,Linux文件的扩展名本身对Linux操作系统没有特殊的含义,Linux系统并不以文件的扩展名来区分文件类型。例如,test.exe只是个文件,其扩展名.exe并不代表此文件就一定是可执行的。实际上,在Linux操作系统中,

文件类型是靠权限位的标识符来进行区分的,当然也可以通过颜色,如黑色代表普通文件,天蓝色代表文件夹。



2. 目录创建/删除


目录创建

mkdir 文件目录
mkdir -p 文件目录 # 递归创建目录
mkdir 目录1 目录2 目录3 # 创建多个目录


目录删除

rmdir 目录名称 # 必须是空目录
rmdir -p 目录名称1/目录名称2/目录名称3	# 递归删除空目录,从右往左一级一级删除空目录
rmdir 目录名称1 目录名称2 目录名称3	# 删除多个目录



3. 文件创建/删除


文件创建

touch 文件名称
touch 文件名称1 文件名称2 文件名称3 # 创建多个文件
touch file{1..5} # 一键创建有序号的多个文件


文件删除

rm [选项]	文件或文件夹的名称
选项:
-r:  针对文件夹,代表递归删除,先把目录下的所有文件删除,再删除文件夹
-f:  强制删除,不提示。



4. 文件复制/剪切/重命名


文件复制

cp [选项] 源文件或文件夹 目标路径
选项说明:
-r: 递归复制,主要针对文件夹
-f: 强行覆盖,不提示
-v: 显示复制过程

# 实例
# 把1.txt文件复制到/root/tmp文件夹中
cp 1.txt /root/tmp/ 

# 把1.txt文件复制到/root/tmp文件夹中,并重命名为2.txt
cp 1.txt /root/tmp/2.txt 

# 把test01文件夹连同其内部的文件统一复制到test02文件夹下
cp -r test01 test02/ 

# 把test01文件夹连同其内部的文件统一复制到test02文件夹下,强行覆盖已经存在的文件并查看复制过程
\cp -rfv test01 test02/ 

实际操作中会发现,在使用

cp -f

操作时,如果碰到文件重复的情况,系统仍然会提示确认是否要每个都被覆盖。原因是在

.bashrc

文件中定义了

alias cp='cp -i'

的别名。所以要达到

cp -f

的效果,可以使用以下三种方法:

# 方法1:使用反斜杠,就不会使用系统中的别名
\cp -rf test01 test02/ 

# 方法2:卸载别名
unalias cp
\cp -rf test01 test02/ 
alias cp="cp -i" # i是interactive的缩写,表示交互式

# 方法3:添加yes前缀
yes|cp -rf test01 test02/ 


文件剪切

mv [选项] 源文件或文件夹 目标路径
选项说明:
-f: 强行覆盖,不提示
-v: 显示移动过程
-n: 不覆盖已存在的文件,不提示
-i: 交互式的执行命令,interactive的缩写 # 注意:如果同时使用-v, -n, -i命令中的多个,只有写在最后的会生效

# 实例
# 把1.txt文件移动到/root/tmp文件夹中
mv 1.txt /root/tmp/ 

# 把1.txt文件移动到/root/tmp文件夹中,并重命名为2.txt
mv 1.txt /root/tmp/2.txt 

# 把test01文件夹内部的所有文件统一移动到test02文件夹下,并强行覆盖已经存在的文件
mv -f test01/* test02/ 

# 把test01文件夹移动到test02文件夹下,test02下没有test01文件夹
mv -f test01 test02/

# 把test01文件夹移动到test02文件夹下,test02下已有test01文件夹,强行覆盖重复文件并查看移动过程
mv -vf test01/* test02/test01/

# 把test01文件夹移动到test02文件夹下,test02下已有test01文件夹,不覆盖重复文件并查看移动过程
mv -uf test01/* test02/test01/



.bashrc

文件中定义了

alias mv='mv -i'

的别名。

另外

mv

命令也有重命名的作用

,格式如下:

mv 源文件或文件夹名称 新文件或文件夹名称



5. 文件打包/压缩/解压缩


文件打包

tar [选项] 打包后的名称.tar 多个文件或文件夹
选项说明:
-c: 打包
-f: filename, 打包后的文件名称
-v: 显示打包的进度
-u: update缩写,更新原打包文件中的文件(了解)
-t: 查看打包的文件内容(了解)

tar -tf 打包后的文件名称.tar # 查看打包文件的内容
tar -uf 打包后的文件名称.tar 追加的新文件 # 往tar里追加内容
tar -xf 打包后的文件名称.tar # 释放tar包中的文件


文件打包并压缩

tar [选项] 压缩后的压缩包名称 要压缩的文件或文件夹
选项说明:
-cf: 对文件或者文件夹进行打包
-z: 使用gzip压缩工具把打包后的文件压缩为.gz
-j: 使用bzip2压缩工具把打包后的文件压缩为.bz2
-J: 使用xz压缩工具把打包后的文件压缩为.xz
-P: 保留绝对路径,即"/"

压缩速度:gzip > bzip2 > xz
压缩率: gzip < bzip2 < xz
100M 90M 80M 70M

# 实例
tar -zcf abc.tar.gz a.txt b.txt c.txt


文件解压缩

tar [选项] 压缩包名称 
选项说明:
-P: 若压缩时指定了-P,解压时指定才有效果
-C: 解压到指定路径下 # 若在压缩与解压缩时都指定了—P参数,—C参数不生效

# .tar.gz格式的压缩包
tar -zxf 名称.tar.gz

# .tar.bz2格式的压缩包
tar -jxf 名称.tar.bz2

# .tar.xz格式的压缩包
tar -Jxf 名称.tar.xz


zip压缩

zip格式在Windows与Linux下都可正常使用

zip [选项] 压缩后的文件名称.zip 文件或文件夹
选项说明:
-r: 递归压缩,主要针对的是文件夹

# 实例
zip abc.zip a.txt b.txt c.txt
zip -r wechat.zip wechat # 把文件夹压缩


zip解压缩

unzip 压缩包名称 # 解压到当前目录
unzip 压缩包名称 -d 指定路径 # 解压到指定路径下

# 实例
unzip abc.zip
unzip wechat.zip -d /usr/local/nginx/ # 把wechat.zip解压到/usr/local/nginx目录下



6. 文件查看命令

# 正序输出文件内容
cat 文件名称

# 合并输出多个文件内容
cat 文件名称1 文件名称2 文件名称3 > 合并后的文件名称

# 倒序输出文件内容
tac 文件名称

# 查看文件的前n行,如果不指定n,则默认显示前10行
head -n 文件名称

# 查看文件的最后n行,如果不指定n,则默认显示前10行
tail -n 文件名称

# 动态查看文件的输出信息,主要用于动态查看日志
tail -f 文件名称


less分屏显示文件内容

不讲more命令,应该more命令只是less命令的一个过渡版本,直接掌握less命令就好了,基本用法如下

# 不显示行号
less 文件名称

# 显示行号
less -N 文件名称

less命令加载文件时,是一点一点加载到内存,因此在读取大文件时,效率比较高。less命令的执行会打开一个交互界面,下面是一些常用的交互命令:

按键 功能
回车键 向下移动一行
d 向下移动半页
空格键 向下移动一页
b 向上移动半页
上下方向键 向上及向下移动
less -N 文件名称 显示行号
/字符串 搜索指定的字符串
q 退出less



7. 文件统计命令

# wc命令
wc [选项] 文件名称
选项说明:
-l:表示lines,行数(以回车/换行符为标准)
-w:表示words,单词数(依照空格来判断单词数量)
-c:表示bytes,字节数(空格、回车、换行)

# du命令
du [选项] 文件名或文件夹名
选项说明:
-s:summaries,只显示汇总的大小,统计文件夹的大小
-h:以较高的可读性显示文件或文件夹的大小
-d:统计文件夹下几层内的全部文件,大于等于0,0表示summaries



8. 文件处理命令

# find命令
find [选项] 文件名称
选项说明:
-name:指定要搜索的文件名称,支持*通配符
-type:代表要搜索的文件类型,f代表普通文件,d代表文件夹 => 加快检索速度

# grep命令
grep 要搜索的关键词 搜索的文件名称

# 输出重定向
>  :标准输出重定向,覆盖输出,会覆盖掉原先的文件内容
>> :追加重定向,追加输出,不会覆盖原始文件内容,而是会在原始内容末尾继续添加



版权声明:本文为weixin_43934075原创文章,遵循 CC 4.0 BY-SA 版权协议,转载请附上原文出处链接和本声明。