You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何在Unix中使用通配符复制文件及匹配特定规则的文件

在Unix系统中使用通配符复制文件的方法

一、基础:Unix中常用的通配符与复制用法

Unix shell(比如bash、zsh)支持通配符匹配(globbing),能快速批量选中符合规则的文件,常见通配符和实用场景如下:

  • *:匹配任意长度的任意字符(包括0个),比如执行 cp *.txt ./backup 就能把当前目录所有.txt文件复制到backup目录
  • ?:匹配单个任意字符,比如 cp file?.txt ./ 会选中file1.txt、fileA.txt这类文件名里file后仅跟一个字符的文件
  • [字符范围]:匹配范围内的单个字符,比如 cp file[0-3].txt ./ 会选中file0.txt到file3.txt,cp file[a-z].txt ./ 则会选中filea.txt到filez.txt

二、解决你的具体需求:匹配"file开头+一个或多个数字+.txt"的文件

你之前尝试的 cp path_name/file[0-9].txt ./ 只能匹配单个数字的文件(比如file1.txt),原因是[0-9]仅能匹配单个数字字符,像file45.txt、file5642.txt这类包含多个数字的文件就无法被选中。

要匹配一个或多个数字,需要用到shell的扩展通配符,以bash为例:

  1. 先检查是否开启了扩展通配符支持:
    执行 shopt extglob,如果输出是extglob off,就运行 shopt -s extglob 开启它(这个设置是临时的,重启shell后会恢复,若要永久生效可以加到~/.bashrc配置文件里)
  2. 执行正确的复制命令:
    cp path_name/file+([0-9]).txt ./
    
    这里的+([0-9])表示匹配一个或多个数字字符,刚好符合你的需求,能精准选中file1.txt、file45.txt、file5642.txt这类文件。

如果是zsh环境,默认支持类似的匹配规则,你可以直接用:

cp path_name/file[0-9]##.txt ./

[0-9]##同样代表匹配一个或多个数字字符。

内容的提问来源于stack exchange,提问作者Corrupted Disciple

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.05.22 10:00:48