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

【Linux专栏】ls 排除某个文件

Oracle && OceanBase 相关文档,希望互相学习,共同进步

风123456789~-CSDN博客


1.背景

需求:ls 查看某个文件夹的内容,排除某个文件 ,打印到某个文件中。

2. 实验

2.1 ls 排除某个文件

列出当前目录下所有文件,但不包括名为feng.txt的文件,命令如下:

ls | grep -v feng.txt

说明:grep -v用于反向选择,即选择不匹配给定模式的行,如上 不含feng.txt

2.2lsgrep排除多个文件

排除多个文件,如:同时排除 feng.txtanotherfile.txt

ls | grep -v -e feng.txt -e anotherfile.txt

2.3 ls 通配符或正则表达式 排除

使用ls的通配符或正则表达式排除特定模式:

ls | grep -vE '\.log$'

说明:-E选项 允许使用扩展的正则表达式,\.log$匹配所有以.log结尾的文件名

3.综合命令解析

1)查看文件夹下的 txt 结尾的文件

ls -l *.txt

2)只把文件名输出 |awk '{print $9}'

知识点:

awk: 强大的文本处理工具默认以空格制表符为分隔符将每一行分割成多个字段(列)

$9: 表示第 9 个字段。在标准的ls -l输出中,前 8 个字段通常是:权限、硬链接数、所有者、所属组、文件大小、月份、日期、时间(或年份),第9个字段是文件名。

print $9: 打印每行的第 9 个字段

ls -l *.txt | awk '{print $9}'

以上命令,输出当前文件夹中的 .txt 的文件,并打印每行的第9个字段(文件名称),结果:

3)排除某个文件

ls -l *.txt|grep -v file-common-1.0.0.jar.txt | awk '{print $9}'

以上命令,排查了 file-common-1.0.0.jar.txt

3)print $9 潜在风险

虽然该命令在许多情况下能正常工作,但它存在‌不稳定性‌,主要原因如下:

  • 时间格式差异导致列偏移‌:
    ls -l的输出格式取决于文件修改时间距今的远近。

    • 如果文件是‌今年‌修改的,时间列显示为HH:MM(如Jun 12 10:52),此时文件名确实是第 ‌9‌ 列。
    • 如果文件是‌去年或更早‌修改的,时间列显示为YYYY(如Jun 12 2025),会多占用一列,导致文件名变为第 ‌10‌ 列。
    • 后果‌:使用{print $9}会导致旧文件的名字截取错误(可能只截取了年份部分),或者新文件的名字截取正确,造成结果不一致。
  • 文件名包含空格‌:
    如果文件名中包含空格(如my file.txt),awk默认以空格分隔,会将文件名拆分成多个字段,$9只能获取文件名的第一部分。

4)优化写法 ls -1 *.txt

ls -1 *.txt

ls -1 *.txt作用是‌以每行一个文件的格式,列出当前目录下所有扩展名为.txt的文件名

  • ls‌: Linux 中列出目录内容的命令。
  • -1‌ (数字 1): 强制输出格式为‌每行只显示一个文件‌。
    • 注意:当ls的输出指向终端(terminal)时,如果文件较多,默认可能会多列显示;如果输出被重定向到文件或管道,默认通常就是每行一个。使用-1可以确保无论在哪种环境下,输出都是严格的单列格式
  • *.txt‌: 通配符模式,匹配当前目录下所有以.txt结尾的文件。

截图:

5)优化写法 find . -maxdepth 1 -name "*.txt" -printf "%f\n"

find . -maxdepth 1 -name "*.txt" -printf "%f\n" 或 find -name "*.txt" -printf "%f\n"

find命令不受时间格式或文件名空格的影响:

  • -maxdepth 1:仅在当前目录查找,不递归子目录
  • -printf "%f\n":仅打印文件名(不含路径)

6)打印输出到文件中

#列表名单 NH_JAR="/home/nh_xx.txt" ls -1 *.txt | grep -v file-common-1.0.0.jar.txt > ${NH_JAR}

缩减命令:

ls -1 *.txt | grep -v file-common-1.0.0.jar.txt > /home/sxnhtc/mcro/backups_log/nh_jar.txt

实验验证:ok


项目管理--相关知识

项目管理-项目绩效域1/2-CSDN博客

项目管理-项目绩效域1/2_八大绩效域和十大管理有什么联系-CSDN博客

项目管理-项目绩效域2/2_绩效域 团不策划-CSDN博客

高项-案例分析万能答案(作业分享)-CSDN博客

项目管理-计算题公式【复习】_项目管理进度计算题公式:乐观-CSDN博客

项目管理-配置管理与变更-CSDN博客

项目管理-项目管理科学基础-CSDN博客

项目管理-高级项目管理-CSDN博客

项目管理-相关知识(组织通用治理、组织通用管理、法律法规与标准规范)-CSDN博客


Oracle其他文档,希望互相学习,共同进步

Oracle-找回误删的表数据(LogMiner 挖掘日志)_oracle日志挖掘恢复数据-CSDN博客

oracle 跟踪文件--审计日志_oracle审计日志-CSDN博客

ORA-12899报错,遇到数据表某字段长度奇怪现象:“Oracle字符型,长度50”但length查却没有50_varchar(50) oracle 超出截断-CSDN博客

EXP-00091: Exporting questionable statistics.解决方案-CSDN博客

Oracle 更换监听端口-CSDN博客

http://www.jsqmd.com/news/1185535/

相关文章:

  • OpenGL运行环境搭建学习01篇【Related to https://learnopengl-cn.github.io/】
  • 《超简单:用 Python 让 Excel 飞起来》读书笔记:第8章 扩展 使用子图展示多个视角
  • TLP241A光隔离继电器与PIC18F4620在工业控制中的应用
  • GitHub热门AI系统提示词泄露项目解析与实战应用指南
  • Steam成就管理终极指南:如何用开源工具完全掌控你的游戏成就
  • 我的世界Java版安装指南:从Java环境配置到游戏启动完整教程
  • TB67H480FNG与PIC18K40在电机控制中的黄金组合
  • 记忆的锁链:为什么线性时间流容不下爆发式的信息增长?
  • 九宫格拼图小程序免费攻略,不用花钱也能做 - 软件工具教程方法
  • 多模态情感识别技术:原理、实现与优化
  • 移位寄存器链:从 DPD 内存深度到 CNN 滑动窗口
  • YOLOv8蜜蜂检测实战:从环境配置到生产部署完整指南
  • 多维聚合实战:从SQL分组到可交互数据立方体
  • 锂离子电池过压保护方案设计与实现
  • UE5 C++定时器实战:从核心机制到避坑指南
  • AI工程师学习路径:从基础到工程实践全解析
  • 指针的底层原理与工程实践
  • 罗德与施瓦茨ZNB矢量网络分析仪实时滤波器调谐流程
  • 传统单体架构改造方案实战:从单体地狱到模块化架构的渐进式演进
  • 手把手教你用九宫格拼图软件,零基础入门教程 - 软件工具教程方法
  • Windows虚拟磁盘映射工具ExtraSubst Home详解与应用
  • Java XML转JSON实战:结构差异、转换库选择与生产环境最佳实践
  • Jenkins- centos7.X下安装Jenkins
  • 【2013-12-17】设计模式学习笔记:组合模式
  • MySQL数据库 (十四) MySQL事务(上),事务的四大特性,事务的操作方式,事务的隔离级别
  • C++17 主要新特性 汇总
  • Qt C++项目集成MeloTTS.cpp:纯C++离线TTS引擎的完整实践指南
  • AI项目部署实战:从环境配置到性能优化的完整指南
  • 机器学习实战入门:从西瓜书习题到核心概念通关
  • 从图像统计特征看图像质量评估-均值,方差,对比度,熵