目录

一、文件存储

二、硬链接与软链接

硬链接

如何创建硬链接:

硬链接知识小结

软连接

如何创建软连接?

软连接知识小结:

三、文件删除的原理

四、文件目录管理命令

cp命令

mv 命令

rm 命令

find命令

cut命令

sort 命令

uniq 命令

wc 命令

head命令

tail命令

split命令

五、文件搜索工具

字符匹配

分组及引用

Linux文件搜索命令

which命令

whereis命令

type命令

find命令


一、文件存储

文件存储?

文件储存在硬盘上,硬盘的最小存储单位叫做"扇区"(Sector)。每个扇区储存512字节(相当于0.5KB)。

操作系统读取硬盘的时候,一次性连续读取多个扇区,即一次性读取一个"块"(block)。这种由多个扇区组成的"块",是文件存取的最小单位。"块"的大小,最常见的是4KB,即连续八个 sector组成一个 block。

什么是inode?

储存文件的元信息,比如文件的创建者、文件的创建日期、文件的大小等等。这种储存文件元信息的区域就叫做inode,中文译名为"索引节点"。

显示文件和文件系统的详细信息

可以用stat命令,查看某个文件的inode信息:

文件的时间戳,共有三个:

ctime显示的是文件的权限、拥有者、所属的组、链接数发生改变时的时间。当然当内容改变时也会随之改变(即inode内容发生改变和Block内容发生改变时)

mtime指文件内容上一次变动的时间,

atime指文件最后被访问的时间。

* 链接数,即有多少文件名指向这个inode

df命令  查看文件系统磁盘空间占用情况

查看每个硬盘分区的inode信息,可以使用df -i命令。

inode也会消耗硬盘空间,所以硬盘格式化的时候,操作系统自动将硬盘分成两个区域。

一个是数据区,存放文件数据;另一个是inode区(inode table),存放inode所包含的信息。

每个inode节点的大小,一般是128字节或256字节。

inode节点的总数,在格式化时就给定,一般是每1KB或每2KB就设置一个inode。

表面上,用户通过文件名,打开文件。实际上,系统内部这个过程分成三步:

首先,系统找到这个文件名对应的inode号码;

其次,通过inode号码,获取inode信息;

最后,根据inode信息,找到文件数据所在的block,读出数据。

使用ls -i命令,可以看到文件名对应的inode号码:

Unix/Linux系统中,目录(directory)也是一种文件。打开目录,实际上就是打开目录文件。

目录文件的结构非常简单,就是一系列目录项(dirent)的列表。

每个目录项,由两部分组成:所包含文件的文件名,以及该文件名对应的inode号码。

df -h命令  以可读性较高的方式来查看磁盘使用情况;

二、硬链接与软链接

硬链接

源文件与硬链接文件的inode是一样的;硬链接文件与原始文件其实是同一个文件,只不过是不同的名字而已。硬连接的作用是允许一个文件拥有多个有效路径名,这样用户就可以建立硬连接到重要文件,以防止“误删”的功能。仅删除一个链接并没有影响。

如何创建硬链接:

ln 源文件名 硬链接名

如果给一个源文件创建了硬链接文件,将硬链接文件移动至其他文件后不小心将源文件删除,然后通过cp命令将硬件文件弄到之前源文件所在地址后,在使用ls -i命令查看inode号,会发现他的inide号改变了,通过mv命令将硬件文件弄到之前源文件所在地址后它的inode号没有变。

改名和移动不会影响inode号,cp命令才会影响。

硬链接知识小结


软连接

软连接的源文件和链接文件的内容一样,inode号不一样;将软连接文件删除,源文件还可以访问,将源文件删除,则不能访问链接文件。

如何创建软连接?

ln -s 源文件名 软连接文件名

软连接知识小结:

内存会被进程占用, 只有当进程被释放时,内存才会被释放


三、文件删除的原理

每个文件都有2各link计数器:i_count(内存引用计数器)和i_nlink(磁盘引用计数器);

想要彻底删除文件,必须使该文件的i_count和i_nlink都为0;

好比一个文件正在被进程调用,而用户却使用rm将文件删除了,这时虽然找不到这个文件了,但是调用该文件的进程仍然在执行,该文件的内存未被释放。 因为rm操作只是将i_nlink数减少了,如果没有其它链接文件那么它的i_nlink数为0,但由于该文件还在被进程引用,所以i_count不为0,系统并没有真正的删除这个文件,想要彻底删除文件,必须使该文件的i_count和i_nlink都为0。

四、文件目录管理命令

cp命令

copy 实现文件或目录的拷贝

copy file1 file2 实现文件 file1 的内容拷贝到文件 file2 上,如果文件 file2 已存在则覆盖,不存在则创建


常用参数:

  • -i:交互式复制,有文件覆盖的时候提醒用户确认
  • -f:强制覆盖 (相当于复制文件时若有同名的文件则强制覆盖)
  • -d:复制符号链接文件本身,而非源文件
  • -P:保留源文件或者目录的路径
  • -R, -r,  递归拷贝

  • -p  保留源文件的属性权限时间等

mv 命令

可以实现移动文件或重命名

mv 后可以是一个目录也可以是一个文件;如果源文件和目标文件在同一目录中,那就是改名。

  • -f:强制覆盖,如果目标文件已经存在,则不询问,直接强制覆盖;
  • -i:交互移动,如果目标文件已经存在,则询问用户是否覆盖(默认选项);
  • -n:如果目标文件已经存在,则不会覆盖移动,而且不询问用户;
  • -v:显示文件或目录的移动过程;
  • -u:若目标文件已经存在,但两者相比,源文件更新,则会对目标文件进行升级;

rm 命令

实现删除文件或目录

常见参数有:

-f, 强制性删除并没有提示

-r, -R,递归删除包含目录下的子目录及文件

-d:删除空文件夹

find命令

find 命令是直接在硬盘中进行搜索的,如果指定的搜索范围过大,find命令就会消耗较大的系统资源,导致服务器压力过大。所以,在使用 find 命令搜索时,不要指定过大的搜索范围。

命令格式:

[root@localhost ~]# find 搜索路径 [选项] 搜索内容

例子: 查找/目录下所有以.log 结尾的文件

[root@rsys_server test]# find / -name "*.log"

cut命令

就是在文件中负责剪切数据用的。cut 是以每一行为一个处理对象的;


常用参数:

  • -d  自定义分割符,如果不定义则使用默认分隔符 tab 键;
  • -f   显示指定字段的内容
  • -c 参数指定切割字符数从起始数到截止数;(cut -c "1-2" wb 切割wb文件中的前两个字符)
  • -b:以字节为单位进行分割

举例:

以空格为分割符切割,显示第一个字段内容;


以空格为分割符切割,显示第一个字段到第三个字段内容;

以空格为分割符切割,显示第一个字段和第三个字段内容;

显示cut.txt文件中第1个和第3个字符

显示cut.txt文件中第1个到第3个字符

sort 命令

sort 命令用来排序,通常是结合文本处理工具使用;

常用参数:

-b 忽略每行前面的空格字符。
-f 忽略大小写
-M 将前面3个字母依照月份的缩写进行排序。
-n 依照数值的大小排序。
-o <输出文件> 将排序后的结果存入制定的文件。
-r 以相反的顺序来排序。
-t <分隔字符> 指定排序时所用的栏位分隔字符。
-k

指定需要排序的栏位

-u 相同数据仅出现一行

如下:

[root@localhost ~]# sort -k 2 -t "." sort.txt
 AA:BB:CC
 ee:60:5.1
 dd:20:4.2
 cc:50:3.3
 ee:40:5.3
 bb:10:2.4
 aa:30:1.9

(表示按"."分隔开。将第二列从小到大排序。)

uniq 命令

主要用来实现去除重复行 前提条件是必须是先排序过的文本


常用参数:

  • -c:在每行前加出现次数(uniq命令加-c选项可以实现对重复次数进行统计。)
  • -d:只输出重复行
  • -i:比较时不区分大小写
  • -u:只显示唯一行
  • -s:跳过
  • -w:忽略

wc 命令

统计文件的字节或者行数等信息


常用参数:

  • -c:统计字节数
  • -l:统计行数
  • -L:统计最长行的长度
  • -m:统计字符数
  • -w:统计单词数,以空格为分界点

head命令

显示前几行


tail命令

显示后几行


-f 随着文件自增自动显示最后新增的内容(新增的内容并不会保存到源文件中)

split命令

分割文档命令


  • -l num :指定分割的行数num行
  • -b :按照每个文件的大小分割 KB MB
  • -d :使用数字做后缀 搭配-a使用 指定数字长度
  • -c :分割的文件单行的最大字节数 byte-

Linux命令之文件分割split命令_恒悦sunsite的博客-CSDN博客_split命令https://blog.csdn.net/carefree2005/article/details/122703056

这个博客巨详细!!)

五、文件搜索工具

字符匹配

.    匹配任意单个字符(grep 'r..t' /etc/passwd)

*    匹配其前面字符任意次;0,1,多次;例如grep "x*y"

\?  匹配其前面字符0次或1次;(基本正则要加/,扩展正则不用加)

\+  匹配其前面字符1次或多次;

.*   匹配任意多个字符

(使用grep命令即为正则表达式,不适用grep为通配符。)

单词:非特殊字符组成的连续字符(字符串)都称为单词;

\<root    用于单词模式的左侧,类似于以某个单词开头;

root\>    用于单词模式的左侧,类似于以某个单词结尾

\<apple\>  用于匹配完整的单词;


分组及引用

Linux文件搜索命令

which命令

在$PATH的所有目录里搜索某个系统命令的位置,默认在第一个文件中查找到了就不去其它文件里找到;内部命令也是找不到的(例如:history)

-a   在所有目录里找系统命令

--skip-alias   只有文件目录没有别名(针对有命令别名的)

whereis命令

查询命令或程序的帮助手册的位置

-b   只查找可执行命令

-m  只查找帮助文件

type命令

用来分辨该命令是外部命令还是内部命令(shell builtin)还是别名

find命令

功能描述:在目录中查找文件。不仅可以按照文件名搜索文件,还可以按照权限、大小、时间、inode 号等来搜索文件。但是 find 命令是直接在硬盘中进行搜索的,如果指定的搜索范围过大,find命令就会消耗较大的系统资源,导致服务器压力过大。所以,在使用 find 命令搜索时,不要指定过大的搜索范围。

命令格式:find 搜索路径 [选项] 搜索内容

常用参数:

  1. -name: 按照文件名搜索;
  2. -iname: 按照文件名搜索,不区分文件名大小;
  3. -inum: 按照 inode 号搜索;

-size[+-]大小:按照指定大小搜索文件(这里的"+"的意思是搜索比指定大小还要大的文件,"-" 的意思是搜索比指定大小还要小的文件。)

-atime [+-]时间:  在过去 n 天内被读取过的文件

-mtime [+-]时间: 在过去 n 天内修改过的文件

-ctime [+-]时间:  在过去 n 天内创建的文件

这三个时间的区别我们在 stat 命令中已经解释过了,这里用 mtime 数据修改时间来举例,重点说说 "[+-]"时间的含义。

-5:代表5天内天修改的文件。

5: 代表前5~6天那一天修改的文件。

+5: 代表5天前修改的文件。

举例:

实例1:ls -l命令放在find命令的-exec选项中

命令:

find . -type f -exec ls -l {} \;

【Linux】软硬链接 文件存储,删除,文件目录管理 (cp、mv、rm、cut、sort、uniq、wc、head、tail、split 、which、whereis、type、find)相关推荐

  1. Linux创建目录和文件 mkdir、touch、cp、rm、mv 和 ln命令

    目录 前言 一.mkdir命令 二.touch命令 三.ln命令 3.1 软/硬链接 3.2 软链接详解 四.cp命令 五.rm命令 六.mv命令 七.rename 前言  点击此处查看 ls.cd. ...

  2. 嵌入式 Linux 入门(二、Linux 文件系统、文件类型及权限管理)

    嵌入式 Linux入 门第二课, linux 文件系统.文件类型及权限管理. ...... 矜辰所致 目录 前言 一.Linux 文件属性 1.1 Linux 文件类型 1.2 Linux 文件权限及 ...

  3. linux 连个文件都删除不了,什么鬼!

    前言 最近不是redis 6.0 出了吗,官网介绍最新稳定版本是 6.0.3 .于是,我就准备在自己的破小服务器上安装一下.于是,出现了后续的糟心事 (linux 下的文件正常删除不了). 下载了最新 ...

  4. 阿里云文件存储和自我管理的云解决方案的TCO比较

    阿里云文件存储是一种完全托管的文件存储服务. 很多客户也会使用第三方软件搭建自我管理的云解决方案. 本文重点从总体拥有成本(TCO)的角度,对这两种文件存储服务进行比较. 使用阿里云文件存储服务的总拥 ...

  5. Linux学习1—文件和用户的管理

    文章目录 一.文件管理 二.用户管理 一.文件管理 Linux以单根的方式组织文件/ Linux文件组织 : bin:普通用户使用的命令 sbin:管理员使用的命令 dev:设备文件 root:roo ...

  6. linux 建立链接文件命令

    每个文件都独自占用一个 inode,文件内容由 inode 的记录来指向: 如果想要读取文件内容,就必须借助目录中记录的文件名找到该文件的 inode,才能成功找到文件内容所在的 block 块: l ...

  7. Linux系统中文件被删除后的恢复方法(ext4)

    本文档给出了恢复ext4文件系统被误删的文件的方法,需要使用的软件是extundelete,这款软件对ext4文件系统的恢复成功率比较高,值得拥有! [root@localhost ~]# rm -R ...

  8. linux find查找文件然后删除,linu查找find命令及删除7天前的文件

    在/ l o g s目录中查找更改时间在7日以前的文件并删除它们: $ find logs/ -type f -mtime +7 -exec rm -f {} \; 在/ l o g s目录中查找更改 ...

  9. Linux文件与目录的复制、删除与移动(cp、rm、mv)

    cp(复制文件或目录) cp [-adfilprsu] 源文件 目标文件 cp [options]源文件1 源文件2 ......目录 选项与参数: -a:相当于-dr --preserve=all的 ...

最新文章

  1. Educational Codeforces Round 41 E. Tufurama (961E)
  2. tensorflow随笔-acosh,acos
  3. Linux查看当前http连接,51CTO博客-专业IT技术博客创作平台-技术成就梦想
  4. C语言程序设计 | 模拟实现字符串操作函数:strlen, strcmp, strcpy, strcat, strchr, strstr
  5. matlab神经网络43个案例分析_10个经典案例,带你一起分析:高层结构设计难点...
  6. 测试驱动开发 测试前移_我如何以及为什么认为测试驱动开发值得我花时间
  7. 工作流实战_25_flowable 流程中的自动跳过
  8. table TD 超出省略号
  9. javascript的一些各浏览器不兼容的地方
  10. MATLAB处理txt文档数据——以处理pscad输出数据为例
  11. 【IT之路】LoadRunner系列-Loadrunner 11破解汉化
  12. win8普通版连接远程桌面---RDPWrap
  13. 现代计算机的存储体系 (转载)
  14. 读书笔记-干法-永不言弃绝不妥协埋头苦干
  15. 【优化布局】基于粒子群算法求解带出入点的车间布局优化问题附matlab代码
  16. 通过bitset库实现sha256
  17. 头歌平台数据结构与算法 单链表实验 第1关:倒置链表
  18. 人脸识别库face_recognition安装简单教程
  19. 从零开始搭建oj(ubuntu)
  20. 微信小程序直连蓝牙实现控制继电器及串口调试功能--全系统开源工程

热门文章

  1. 苹果iPhone XS Max 贴膜之后面容无法使用
  2. 作为程序员,如何开展自己的副业?月赚三万的真实故事
  3. 编码规则-驼峰式拼写法
  4. golang 执行命令行
  5. 第9天:CSS精灵图
  6. JavaScript三目判读男女
  7. python绘制矩阵散点图
  8. AV1:谷歌微软等联合打造的新视频压缩技术
  9. 【调剂】武汉理工大学-交通学院-接收调剂
  10. matlab中频率选择性衰落信道,浅海水声信道模型分析及频率选择性衰落仿真