当前位置: 首页 > news >正文

linux-文件操作

在 Linux 系统中,文件操作与管理是日常使用和系统管理的重要组成部分。下面将详细介绍文件的复制、移动、链接创建,以及文件查找、文本处理、排序、权限管理等相关知识。

一、文件的复制

在 Linux 里,cp 命令可用于复制文件或目录,生成其副本。其语法结构为:cp [选项] 源文件或目录 目标文件或目录。以下是一些常用选项:

  • -r:递归复制整个目录及其子目录。若要复制一个包含子目录的文件夹,就需要使用该选项。
  • -i:在覆盖目标文件之前会提醒用户,避免误操作覆盖重要文件。
  • -f:强制复制,会忽略错误继续复制,即便遇到一些小问题也会尽力完成复制操作。

二、文件的移动

mv 命令用于移动文件或目录,语法结构为:mv [选项] 源文件或目录 目标文件或目录。常用选项 -i 为交互式操作,当目标文件存在时,会提醒用户是否覆盖。

此外,mv 还有其他使用方式。可以使用 mv [多个]文件 目录,如果文件不在目标目录中,就会被移入该文件夹;也能使用 mv [多个]目录 目标目录,实现目录的移动。

三、创建链接文件

ln 命令可以为文件创建链接文件,它不会生成副本,而是与原文件相关联。其语法结构是:ln [选项] 源文件 目标文件。常用选项 -s 用于创建软链接文件。

硬链接与软链接的区别

  • 硬链接:链接文件和源文件具有相同的索引号,链接让它们有不同的名称。硬链接不能跨文件系统,并且不能为目录创建硬链接。
  • 软链接:只是指向另一个文件名,包含的是另外一个文件的路径名的文本指针。软链接可以跨文件系统,也可以为目录创建软链接。

目录的链接方面,子目录数一开始创建默认是 2(. 和 ..)。可以通过 ls -dl 来展示详细的信息,-d 选项能让目录像文件一样显示。

文件名替换功能

在 Linux 中,可以使用特定字符去匹配字符(正则表达式):

  • ?:匹配单个字符。
  • *:匹配 0 到 n 个字符。
  • [字符列表]:匹配文件名中任意在字符列表中的字符。
  • [!字符列表]:匹配文件名中任意不在字符列表中的字符。

系统会先处理通配符,再去匹配(文件名扩展),命令本身并不知道通配符的存在。

四、文件查找和文本处理

查找文件

find 命令可在层次目录中根据文件名或文件属性名去定位文件,还能对定位的文件执行删除、打印等操作。其语法格式为:find [目录] [条件] [动作]。例如,find ./ -name filea -print 会在当前目录中通过名字查找 filea,找到后将其打印出来。

常见选项
  • -name:根据文件名查找,使用时可以结合通配符,但要使用双引号包起来。
  • -type:根据文件类型查找,常见的文件类型有 b(块设备)、c(字符特殊设备)、d(目录文件)、f(普通文件)。
  • 可以使用操作符实现多个条件的查找:
    • -a:与操作(默认)。
    • -o:或操作。
    • !:非操作。
    • ():逻辑组,指定哪些条件优先评估。
  • -size +-n:根据文件大小(块)查找。
  • -mtime +-n:根据最后修改的时间(天)查找。
常见动作
  • -exec 命令名 {} \;:把找到的文件当做参数去执行新的命令。
  • -ok 命令名 {} \;:同上,但为交互式操作,执行前会询问用户是否继续。
    也可以使用 + 去替换 \;

文本查找

grep 命令用于在一个或多个文件中查找满足特定格式的行。其语法格式为:grep [选项] 搜索的字符串 文件名,输出的是包含搜索字符串的行。

常见选项
  • -i:忽略大小写。
  • -n:显示匹配的行号。
  • -v:显示不匹配的行。
  • -w:匹配整个字符串。
  • -c:显示匹配行的数量。
  • -r:递归搜索。

字段提取

cut 命令可从文件中取出指定的字段或列,语法格式为:cut 选项 文件

常见选项
  • -b:指定字节,如 1,3,5 或 1 - 3,5
  • -c:指定字符,如 1 - 4 表示输出第一个到第四个字符。
  • -d:指定分隔符,默认是制表符。如果分隔符有特殊意义或为空格,需要用双引号括起来,例如 cut -d " " -f 1 phones
  • -f:指定字段的位置。

cut 命令的输出会显示在标准输出中。

文件排序

sort 命令用于对文件进行排序,语法格式为:sort [选项] 文件

常见选项
  • -n:以数值来排序,包含负数和小数。
  • -r:逆序排序。
  • -o:输出到指定的文件。
  • -k:指定排序的依据字段,如 1,2 表示先用第一个字段排序,若相同再用第二个字段排序。

五、文件权限管理

文件权限的含义

文件
  • 读(r:可以读取文件内容。
  • 写(w:可以修改文件内容,也能删除文件。
  • 执行(x:可以将文件作为程序文件执行。
目录
  • 读(r:可以列出目录内容。
  • 写(w:可以在目录内部创建、删除、重命名文件和子目录。
  • 执行(x:可以进入该目录。

umask 掩码

umask 掩码用于设置哪些权限不会被赋予新文件。文件的默认权限是 666,目录的默认权限是 777。例如,umask 022 会将初始权限设置为 777 - 022(目录)和 666 - 022(文件)。如果 umask 是 4 位,第一位表示特殊权限。

修改权限

chmod 命令用于修改文件权限,有两种方式:

  • 字符串方式:字符串包括三个部分,u(用户)、g(组)、o(其他)、a(所有);+-=rwx 或 -。例如,chmod u+x file 表示给文件的所有者添加执行权限。
  • 三位八进制方式:例如,chmod 755 file 。

六、Linux 文件组织方式

Linux 基于索引节点来组织文件,索引节点的最大数量在初始化的时候就确定了。删除一个文件会释放其占用的索引节点。目录包含索引节点号,通过索引节点号可以找到对应的索引节点,而索引节点指向文件的数据。

相关文章:

  • FreeRTOS菜鸟入门(十一)·信号量·二值、计数、递归以及互斥信号量的区别·优先级翻转以及继承机制详解
  • 基于MATLAB图像中的圆形目标识别和标记
  • MCUboot 中的 BOOT_SWAP_TYPE_PERM 功能介绍
  • 2048游戏(含Python源码)
  • 大模型推理--从零搭建大模型推理服务器:硬件选购、Ubuntu双系统安装与环境配置
  • 定位理论第一法则在医疗AI编程中的应用
  • 【PaaS与AI融合】MLOps平台的架构设计
  • 【MCP Node.js SDK 全栈进阶指南】专家篇(1):MCP-SDK扩展与定制
  • 【实验笔记】Kylin-Desktop-V10-SP1麒麟系统知识 —— 开机自启Ollama
  • 软考 系统架构设计师系列知识点之杂项集萃(54)
  • 《Python星球日记》第31天:Django 框架入门
  • JAVA设计模式——(十一)建造者模式(Builder Pattern)
  • 计算机视觉与深度学习 | 图像匹配算法综述
  • 【AI论文】像素修补师(PixelHacker):具有结构和语义一致性的图像修复(Image Inpainting)
  • Redis数据结构ZipList,QuickList,SkipList
  • linux、window安装部署nacos
  • MinIO实现https访问
  • 全局过滤器与局部过滤器: Vue中的文本格式化工具
  • Linux中web服务器的部署及优化
  • 网络安全自动化:找准边界才能筑牢安全防线
  • 无人机穿越大理崇圣寺千年古塔时“炸机”,当地:肇事者已找到,将被追责
  • 娱见 | 为了撕番而脱粉,内娱粉丝为何如此在乎番位
  • 长三角9座“万亿城市”一季报出炉:多地机器人产量大增
  • 郭旭涛转任河北省科协党组书记、常务副主席,曾任团省委书记
  • 杨德龙:取得长期投资胜利法宝,是像巴菲特一样践行价值投资
  • 解放军仪仗司礼大队仪仗分队参加纪念苏联伟大卫国战争胜利80周年阅兵活动