shell文件通配符(9):任意一个:?、任意数量:*、任意包含[]、[^]:任意不包含

2023-11-05

一. 有哪些文件通配符

如下图特殊符号具有能够代替(/通配)路径名或文件名的功能。

在这里插入图片描述

 
假设一个文件夹下有如下文件:

$ ls
README.md  file1.txt  file2.txt  file3.txt  file4.txt  string.c  string.h  string.txt

 

二. 匹配任意

?:匹配任意一个字符

string.后面有一个任意字符的文件名

$ ls string.?
string.c  string.h

如果连续指定三个?,则可以匹配到任意三个字符。

$ ls string.???
string.txt

 

*:匹配任意数量的字符串

如下,匹配任何以.txt结尾的文件名。

$ ls *.txt
file1.txt  file2.txt  file3.txt  file4.txt  string.txt

因为 * 也可以匹配到空字符串,所以使用string*.c这种写法也可以匹配到string.c文件。

$ ls string*.c
string.c

 
 

三. 匹配任意指定一个字符

1. []:匹配任意包含

匹配任意包含

在[]中列出多个字符,就可以匹配到含有其中任意一个字符的文件。
如下,可以匹配到string.c和string.h两个文件。

$ ls string.[ch]
string.c  string.h

 

字符范围

在[]中还能使用连字符指定字符的范围。

数字
比如,file[1-3]这种写法就可以匹配到file1、file2、file3中的任意字符。

$ ls file[1-3].txt
file1.txt  file2.txt  file3.txt

字符
通过连字符还可以指定字符范围指。
比如,使用[a-z]就可以匹配到所有的小写字母。

另外,如果想在[]中匹配连字符本身,可以像[-abc]或者[abc-]这样将连字符写到开头或者末尾。

 

2. [!]与[^]:匹配任意不包含

如果[]中的第1个字符是!或者^,则表示相反的意义,即匹配任意一个不在[]中的字符。

匹配file2.txt和file4.txt之外的文件名

$ ls file[!24].txt
file1.txt  file3.txt

如果想在[]中匹配 ! 或 ^ 符号本身,可以

  • 像[\^]这样在前面加上\
  • 或者像[abc\]或[abc!]这样,将^或!放到开头以外的位置。
[root@m3v bin]# ls hadoop.[\!]*
hadoop.!ad
[root@m3v bin]# ls hadoop.[!]*
ls: cannot access hadoop.[!]*: No such file or directory

四. 注意事项

1. 通配符组合

匹配所有以.c或.h结尾的文件

$ ls *.[ch]
string.c  string.h

2. 不能跨越目录层级进行通配

通配符不能匹配(分隔目录的)分隔号。

$ ls /usr/bin/*zip
/usr/bin/gpg-zip  /usr/bin/gunzip  /usr/bin/gzip

3. 不能匹配文件名前面的点号

$ touch .hidden
$ ls *hidden

ls: 无法访问*hidden: 没有那个文件或目录
因此,要想匹配到隐藏文件,需要显式地在文件名前面加上点号。


$ ls .*en
.hidden
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

shell文件通配符(9):任意一个:?、任意数量:*、任意包含[]、[^]:任意不包含 的相关文章

  • 如何获取 (Linux) 机器的 IP 地址?

    这个问题和之前问的几乎一样如何获取本地计算机的IP地址 https stackoverflow com questions 122208 get the ip address of local computer 问题 但是我需要找到一个的I
  • Python DNS服务器IP地址查询

    我正在尝试使用 python 获取 DNS 服务器 IP 地址 要在 Windows 命令提示符下执行此操作 我将使用 ipconfig 全部 如下所示 我想使用 python 脚本做同样的事情 有什么方法可以提取这些值吗 我成功提取了设备
  • 并行运行 shell 脚本

    我有一个 shell 脚本 打乱大型文本文件 600 万行和 6 列 根据第一列对文件进行排序 输出 1000 个文件 所以伪代码看起来像这样 file1 sh bin bash for i in seq 1 1000 do Generat
  • Bash 实例未嵌套在 Dockerfile `RUN` 中

    嵌套 bash 实例会递增 SLVL 环境变量 http tldp org LDP abs html internalvariables html http tldp org LDP abs html internalvariables h
  • Bash - 在与当前终端分开的另一个终端中启动命令的新实例

    我有一个简单的 bash 脚本 test sh 设置如下 bin bash args if args 0 check capture then watch n 1 ls lag home user capture0 watch n 1 ls
  • 检查 Git 中是否需要 pull

    如何检查远程存储库是否已更改并且需要拉取 现在我使用这个简单的脚本 git pull dry run grep q v Already up to date changed 1 但它比较重 有没有更好的办法 理想的解决方案是检查所有远程分支
  • 使用 python 脚本更改 shell 中的工作目录

    我想实现一个用户态命令 它将采用其参数之一 路径 并将目录更改为该目录 程序完成后 我希望 shell 位于该目录中 所以我想实施cd命令 但需要外部程序 可以在 python 脚本中完成还是我必须编写 bash 包装器 Example t
  • 每次重新运行终端时,我都必须输入 export PATH=~/anaconda/bin:"$PATH"

    我已经安装了 Anaconda for Mac 但出现了一些问题 当我输入命令时which conda or which ipython I get conda not found and ipython not find 然后我找到这个命
  • 如何扩展路径中的波形符(~)[重复]

    这个问题在这里已经有答案了 我有一个 shell 脚本 可以从用户那里获取目录路径 但我需要检查目录是否为空 如果用户将他的主路径与 而不是绝对路径 所以我无法检查它ls echo Specify your project root dir
  • Rails 4.1 环境变量未重新加载

    我创建了一个application yml文件在配置目录中并添加了一些键值对 即AWS REGION us east 1 我还添加了以下内容application rb读取文件并更新 ENV 哈希 if Rails env developm
  • 如何使用Android获取Linux内核的版本?

    如何在 Android 应用程序中获取 Linux 内核的版本 不是 100 确定 但我认为调用 uname r 需要 root 访问权限 无论如何 有一种不太肮脏的方法可以做到这一点 那就是 System getProperty os v
  • 使用os.execlp时,为什么`python`需要`python`作为argv[0]

    代码是这样的 os execlp python python child py other args this works os execlp python child py other args this doesn t work 我读过
  • cdc_acm:无法设置 dtr/rts - 无法与 USB cdc 设备通信

    我试图使用 pic24fj128gb206 枚举 usb cdc 设备 设备似乎已正确枚举 但是当我将设备连接到 Linux PC 时 我从内核收到以下警告消息 cdc acm 1 8 1 6 7 1 0 failed to set dtr
  • 正则表达式匹配bash变量

    我正在尝试修改 bash 脚本 当前脚本包含 print div class 1 div Where 1可能看起来像 Apprentice Historian Level 1 Historian Level 4 Master Histori
  • 设置 git 别名,但调用它会给出“找不到命令”

    我想在 git 中设置一个别名来计算存储库中的总行数 因此我进入 Git Bash 并输入以下内容 git config global alias linecount ls files z xargs 0 wc l 我输入命令后 没有出现错
  • 复制目录内容

    我想将目录 tmp1 的内容复制到另一个目录 tmp2 tmp1 可能包含文件和其他目录 我想使用C C 复制tmp1的内容 包括模式 如果 tmp1 包含目录树 我想递归复制它们 最简单的解决方案是什么 我找到了一个解决方案来打开目录并读
  • 尽管我已在 python ctypes 中设置了信号处理程序,但并未调用它

    我尝试过使用 sigaction 和 ctypes 设置信号处理程序 我知道它可以与python中的信号模块一起使用 但我想尝试学习 当我向该进程发送 SIGTERM 时 但它没有调用我设置的处理程序 只打印 终止 为什么它不调用处理程序
  • 从 Linux 内核模块中调用用户空间函数

    我正在编写一个简单的 Linux 字符设备驱动程序 以通过 I O 端口将数据输出到硬件 我有一个执行浮点运算的函数来计算硬件的正确输出 不幸的是 这意味着我需要将此函数保留在用户空间中 因为 Linux 内核不能很好地处理浮点运算 这是设
  • 无法显示 Laravel 欢迎页面

    我的服务器位于 DigitalOcean 云上 我正在使用 Ubuntu 和 Apache Web 服务器 我的家用计算机运行的是 Windows 7 我使用 putty 作为终端 遵循所有指示https laracasts com ser
  • Bash 中单行 while 循环的语法

    我无法找到分号和 或大括号的正确组合 我想这样做 但作为命令行中的一句 while 1 do foo sleep 2 done while true do foo sleep 2 done 顺便说一句 如果您在命令提示符下将其输入为多行 如

随机推荐

  • Python-netfilterqueue(白帽)[netfilterqueue怎么安装在kali中?][iptables怎么用]

    一 环境安装 前要 使用python3 6以上版本安装netfilterqueue会出现报错无法安装 1 安装python3 6 前提 本机已有python3 9 在此前提下安装python3 6 问题 中间有什么报错无法进行 一般是小问题
  • C语言自动抓取淘宝商品详情网页数据,实现轻松高效爬虫

    你是否曾经遇到过需要大量获取网页上的数据 但手动复制粘贴又太过费时费力 那么这篇文章就是为你而写 今天我们将会详细讨论如何使用C语言实现自动抓取网页上的数据 本文将会从以下8个方面进行逐步分析讨论 1 HTTP协议的基本原理 在开始之前 我
  • Java 自动单元测试生成框架

    推广博客 Java 自动单元测试生成框架
  • STC15单片机自带的AD功能的使用

    一 什么是ADC DAC ADC Analog to Digital Converter的缩写 意思是模 数转换器 实现把模拟信号转变为数字量的设备称为模 数 A D 转换器 简称ADC 实现把数字量转变为模拟量的设备称为数 模 D A 转
  • PHP 登录注册附带邮箱手机号验证

    原创 请勿转载 PHP 登录注册页面 前言 一 配置数据库文件 二 登录注册代码段 1 登录 2 注册 3 主页 4 注销 总结 前言 php简单的登录页面与注册页面 有邮箱手机号验证 源码在github上 https github com
  • 双亲委派机制

    JVM双亲委派机制 JVM预定义的三种类型类加载器 定义 类加载器 ClassLoader 是Java语言的一项创新 也是Java流行的一个重要原因 在类加载的第一阶段 加载 过程中 需要通过一个类的全限定名来获取定义此类的二进制字节流 完
  • 关于SQL注入报错:Illegal mix of collations for operation ‘UNION‘原因剖析与验证

    关于SQL注入报错 Illegal mix of collations for operation UNION 原因剖析与验证 今天练习了一下DVWA的SQL注入模块 使用了union注入时报错如下 Illegal mix of colla
  • 解决“vue-router子路由默认视图不显示”问题

    今天在看Vue学习视频 老师讲解vue router多级路由的使用 在写完视频里的例子后 自己测试发现一个小问题 当时视频里没有提及 我是用name实现的路由之间的切换 其中一个有子路由 发现子路由的默认显示没有了 第一次默认有 第二次点击
  • JVM GC算法 CMS 详解(转)

    前言 CMS 全称Concurrent Low Pause Collector 是jdk1 4后期版本开始引入的新gc算法 在jdk5和jdk6中得到了进一步改进 它的主要适合场景是对响应时间的重要性需求 大于对吞吐量的要求 能够承受垃圾回
  • Python标准库asyncio模块基本原理浅析

    Python标准库asyncio模块基本原理浅析 本文环境python3 7 0 asyncio模块的实现思路 当前编程语言都开始在语言层面上 开始简化对异步程序的编程过程 其中Python中也开始了在语言层面上对异步编程的简化 特地使用了
  • Redis分布式锁的实现(Jedis和Redisson两个方案)

    应用场景 分布式锁主要用于解决 公司中不同业务系统对同一功能的数据产生脏读或重复插入 比如公司现有三个小组分别开发WAP站 小程序 APP客户端 而这三个系统都存在领红包功能 业务要求每人每日只能领取一个红包 如果有人同时登陆三个系统那么就
  • C语言函数返回值不能直接写数组

    C语言返回值不能直接写数组 ifndef VMATH H define VMATH H ifdef cplusplus extern C endif typedef float Matrix44f 16 Matrix44f translat
  • 分布式事务理论与实践

    一 产生背景 业务服务化拆分 原本一个服务能完成的业务操作现在需要跨多个服务 分库分表 写操作可能跨多个数据库 二 理论基础 2 1 2PC协议 角色说明 事务管理器 负责分布式事务的发起与结束 以及失败重试等 事务发起方 资源管理器 本地
  • pyenv管理python版本

    一 介绍 pyenv 是 Python 版本管理工具 pyenv 可以改变全局的 Python 版本 安装多个版本的 Python 设置目录级别的 Python 版本 还能创建和管理 virtual python environments
  • 编程语言比拼之Java VS C++

    学Java还是C Java和C 都是非常受欢迎的编程语言 各有各的优势和适用场景 以下是对它们的简要比较 性能 C 通常被认为是一种更高效的编程语言 适用于对性能要求较高的应用程序 如游戏开发 嵌入式系统和高频交易等 C 具有更接近底层的控
  • 常用串口调试工具比较

    在PC机上 目前有许多免费的串口调试工具 比较常用的有 1 串口调试助手 V2 2 优点 使用方便 用户群最多 有书介绍及免费源代码 缺点 1 因采用多线程接收技术 接收有时丢数 特别在高波特率或使用USB转串口时丢数较多 2 最大只支持1
  • java数组之二分查找法(折半查找)

    二分法就是用折半的思想 屁话不多说 上源码 public class BinarySearch 二分查找法 折半 折半查找 使用条件 必须是有序数组 需要三个变量 int min 0 int max 数组 length int mid mi
  • 使用OpenCV,Numpy计算直方图,Matplot绘制直方图及分析

    使用OpenCV Numpy计算直方图 Matplot绘制直方图及分析 1 效果图 2 原理 3 源码 3 1 直方图3种计算方法和2种绘制方法 3 2 Mask遮罩图像直方图 参考 这篇博客将介绍如何使用Python OpenCV Num
  • AVALON-MM接口

    AVALON接口分为两类 一种是AVALON MM接口 一般称为MM接口 另一种是AVALON ST接口 刚出来的一种新型接口 MM接口 通过地址读写数据 更多的是用在控制上面 ST接口用于点到点的流数据接口 更多的可以用在有高速通过率的模
  • shell文件通配符(9):任意一个:?、任意数量:*、任意包含[]、[^]:任意不包含

    文章目录 一 有哪些文件通配符 二 匹配任意 匹配任意一个字符 匹配任意数量的字符串 三 匹配任意指定一个字符 1 匹配任意包含 匹配任意包含 字符范围 2 与 匹配任意不包含 四 注意事项 1 通配符组合 2 不能跨越目录层级进行通配 3