我很确定我以前见过这种做法,但我不记得确切的语法。
假设您有几个具有不同文件扩展名的文件:
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/