通过通配符排除文件扩展名

Excluding a file extension through wildcards

我有一个目录,其中包含多个扩展名的文件,例如 *.asc、.txt..csv 等。 我在脚本中使用此路径,我只能更改通过变量传递的文件名。

/home/myuser/mydirectory/{fileNameVariable}

我可以通过将 *.csv 作为变量值传递或将 *.txt 传递给各个文件来选择所有 .csvs。但是我想要做的是选择除 *.asc.

之外的所有文件(.csv、.txt 等)

有没有一种方法可以通过使用通配符只排除一个文件扩展名并选择其余的?

您可以使用 大括号扩展 来 select 只包含您想要的名称和扩展名,并排除任何未命名的扩展名。例如,要在目录中找到所有 .csv.txt 文件,您可以使用:

$ ls -al *.{csv,txt}    ## note: no space after the separating comma

如果您有许多 test1..., test2..., etc. 文件并且您只想 select test2*.csvtest2*.txt 文件,您可以将初始 glob 缩小到:

$ ls -al test2*.{csv,txt}

当然,你可以用你的路径和变量名代替上面的test2