如何在bash中仅列出带有'ls'的特定文件?

时间:2017-07-19 18:45:40

标签: bash

我想知道如何在bash中列出ls的文件,这些文件只会列出特定的文件子集?

例如,我有一个包含10000个文件的文件夹,其中一些文件名为: temp_cc1_covmattemp_cc1_slurm,但值1的范围是1-1000。

那么我如何只列出说temp_cc400_slurm - temp_cc_499_slurm

我想这样做,因为我想在只以slurm结尾的超级计算机上排队文件。我可以sbatch *_slurm,但文件夹中还有很多以_slurm结尾的其他文件。

2 个答案:

答案 0 :(得分:3)

您可以在Brace Expansion中使用此bash

temp_cc{400..499}_slurm

要列出这些文件,请使用:

echo temp_cc{400..499}_slurm

或:

printf "%s\n" temp_cc{400..499}_slurm

甚至ls

ls temp_cc{400..499}_slurm

答案 1 :(得分:1)

使用?通配符:

$ ls temp_cc4??_slurm

man 7 glob

Wildcard matching
   A  string  is  a  wildcard pattern if it contains one of the characters
   '?', '*' or '['.  Globbing is the operation  that  expands  a  wildcard
   pattern  into  the list of pathnames matching the pattern.  Matching is
   defined by:

   A '?' (not between brackets) matches any single character.

参数列表太长错误也适用于?。我使用ls test?????进行了测试但是它有效但ls test[12]?????我收到了错误。 (是的,您也可以ls temp_cc4[0-9][0-9]_slurm。)