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

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

风123456789~-CSDN博客


1.背景

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

2. 实验

2.1 ls 排除某个文件

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

复制代码
ls | grep -v feng.txt

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

2.2 ls 和 grep 排除多个文件

排除多个文件,如:同时排除 feng.txt 和anotherfile.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博客

相关推荐
无奈笑天下2 小时前
银河麒麟上nproc命令教程详解
linux·运维·服务器
Rabitebla5 小时前
【Linux】进程控制(十二) 自定义 Shell(二):内建命令与进程工作目录管理
linux·c++·笔记·学习·bash
火云代理5 小时前
更换网络后为什么会退出登录?分清 IP、Cookie 与会话的关系
服务器·网络·网络协议·tcp/ip·php·ip
威嵌神州6 小时前
嵌入式排故实录:高并发下串口数据“超时丢包”的根因剖析与架构优化
运维·服务器·嵌入式硬件·缓存
Decay__7 小时前
SQLServer 索引与 SQL 优化 —— 聚集索引、非聚集索引、覆盖索引、碎片维护与执行计划
运维·数据库·sql·mysql·架构
java_logo7 小时前
Docker 部署 DeepSeek Harness(moelin):轻松搭建带登录的本地 AI Agent 平台
运维·docker·容器·ai agent·deepseek·harness·轩辕镜像
火云代理9 小时前
同一个网站,有的网络能打开、有的打不开?认识 IPv4 与 IPv6 的访问差异
服务器·网络·网络协议·tcp/ip·测试工具·php·状态模式
坤坤子吖10 小时前
Linux网络编程:TCP 粘包与半包问题,如何正确处理 TCP 流式数据?
linux·服务器·网络·笔记·网络协议·学习
AI_Gump10 小时前
Harness篇|DeepSeek Harness 上手机:五条安卓移植路线与 App 内 Linux 拆解
android·linux·人工智能·智能手机·deepseek
星恒随风11 小时前
MySQL 从零入门(六):复合查询详解——多表查询、自连接、子查询与 UNION
linux·服务器·数据库·mysql