【Linux】软硬链接 文件存储,删除,文件目录管理 (cp、mv、rm、cut、sort、uniq、wc、head、tail、split 、which、whereis、type、find)
目录
一、文件存储
二、硬链接与软链接
硬链接
如何创建硬链接:
硬链接知识小结
软连接
如何创建软连接?
软连接知识小结:
三、文件删除的原理
四、文件目录管理命令
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 搜索路径 [选项] 搜索内容
常用参数:
- -name: 按照文件名搜索;
- -iname: 按照文件名搜索,不区分文件名大小;
- -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)相关推荐
- Linux创建目录和文件 mkdir、touch、cp、rm、mv 和 ln命令
目录 前言 一.mkdir命令 二.touch命令 三.ln命令 3.1 软/硬链接 3.2 软链接详解 四.cp命令 五.rm命令 六.mv命令 七.rename 前言 点击此处查看 ls.cd. ...
- 嵌入式 Linux 入门(二、Linux 文件系统、文件类型及权限管理)
嵌入式 Linux入 门第二课, linux 文件系统.文件类型及权限管理. ...... 矜辰所致 目录 前言 一.Linux 文件属性 1.1 Linux 文件类型 1.2 Linux 文件权限及 ...
- linux 连个文件都删除不了,什么鬼!
前言 最近不是redis 6.0 出了吗,官网介绍最新稳定版本是 6.0.3 .于是,我就准备在自己的破小服务器上安装一下.于是,出现了后续的糟心事 (linux 下的文件正常删除不了). 下载了最新 ...
- 阿里云文件存储和自我管理的云解决方案的TCO比较
阿里云文件存储是一种完全托管的文件存储服务. 很多客户也会使用第三方软件搭建自我管理的云解决方案. 本文重点从总体拥有成本(TCO)的角度,对这两种文件存储服务进行比较. 使用阿里云文件存储服务的总拥 ...
- Linux学习1—文件和用户的管理
文章目录 一.文件管理 二.用户管理 一.文件管理 Linux以单根的方式组织文件/ Linux文件组织 : bin:普通用户使用的命令 sbin:管理员使用的命令 dev:设备文件 root:roo ...
- linux 建立链接文件命令
每个文件都独自占用一个 inode,文件内容由 inode 的记录来指向: 如果想要读取文件内容,就必须借助目录中记录的文件名找到该文件的 inode,才能成功找到文件内容所在的 block 块: l ...
- Linux系统中文件被删除后的恢复方法(ext4)
本文档给出了恢复ext4文件系统被误删的文件的方法,需要使用的软件是extundelete,这款软件对ext4文件系统的恢复成功率比较高,值得拥有! [root@localhost ~]# rm -R ...
- linux find查找文件然后删除,linu查找find命令及删除7天前的文件
在/ l o g s目录中查找更改时间在7日以前的文件并删除它们: $ find logs/ -type f -mtime +7 -exec rm -f {} \; 在/ l o g s目录中查找更改 ...
- Linux文件与目录的复制、删除与移动(cp、rm、mv)
cp(复制文件或目录) cp [-adfilprsu] 源文件 目标文件 cp [options]源文件1 源文件2 ......目录 选项与参数: -a:相当于-dr --preserve=all的 ...
最新文章
- Educational Codeforces Round 41 E. Tufurama (961E)
- tensorflow随笔-acosh,acos
- Linux查看当前http连接,51CTO博客-专业IT技术博客创作平台-技术成就梦想
- C语言程序设计 | 模拟实现字符串操作函数:strlen, strcmp, strcpy, strcat, strchr, strstr
- matlab神经网络43个案例分析_10个经典案例,带你一起分析:高层结构设计难点...
- 测试驱动开发 测试前移_我如何以及为什么认为测试驱动开发值得我花时间
- 工作流实战_25_flowable 流程中的自动跳过
- table TD 超出省略号
- javascript的一些各浏览器不兼容的地方
- MATLAB处理txt文档数据——以处理pscad输出数据为例
- 【IT之路】LoadRunner系列-Loadrunner 11破解汉化
- win8普通版连接远程桌面---RDPWrap
- 现代计算机的存储体系 (转载)
- 读书笔记-干法-永不言弃绝不妥协埋头苦干
- 【优化布局】基于粒子群算法求解带出入点的车间布局优化问题附matlab代码
- 通过bitset库实现sha256
- 头歌平台数据结构与算法 单链表实验 第1关:倒置链表
- 人脸识别库face_recognition安装简单教程
- 从零开始搭建oj(ubuntu)
- 微信小程序直连蓝牙实现控制继电器及串口调试功能--全系统开源工程