linux - 使用 bash 识别多种文件类型

标签 linux bash shell unix command-line

我很确定我以前见过这种做法,但我不记得确切的语法。

假设您有几个具有不同文件扩展名的文件:

foo.txt
bar.rtf
index.html

而不是对它们全部执行操作 (cat *),您只想对 3 个文件扩展名中的 2 个运行命令。

你不能做这样的事情吗?

cat ${*.txt|*.rtf}

我确信有一些 find 技巧可以首先识别文件并将它们通过管道传递给命令,但我认为 bash 支持我所说的,而不必这样做。

最佳答案

您需要的语法是 cat *.{txt,rft}。使用逗号代替竖线。

$ echo foo > foo.txt
$ echo bar > bar.rft 
$ echo "bar txt" > bar.txt 
$ echo "test" > index.html
$ cat *.{txt,rft}
bar txt
foo
bar
$ ls *.{txt,rft}
bar.rft  bar.txt  foo.txt

但是作为Anthony Geoghegan said in their answer您可以使用更简单的方法。

关于linux - 使用 bash 识别多种文件类型,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/33081851/

相关文章:

c - 如何增加 C 语言进程的 Windows 和/或 Linux 读取缓存大小

c++ - Ubuntu 和 OS-X 之间的头文件兼容性

java - linux下spring ResourceServlet在jetty和tomcat中抛出too much open files异常

Bash 查找并移动名称为 '[ ]' 的文件

linux - Bash 变量定义顺序

bash - 从完整路径中获取 Unix 中的文件名

linux - 寻找命令以根据条件暂时执行命令

Windows shell 字符串操作(将反斜杠改为斜杠)

linux - 如何创建没有某​​些文件夹的 tar 存档?

bash 在第二个下划线之后提取并存储