Search code examples
linuxfilenamesglob

Linux file names & file globbing


I have a list of files named:

file000
file001
file002
file003
...
file1100

How can I match all files that have a number greater than 800 but less than 1000 ? I am using linux bash

Thank you


Edit

Actually, my files are named like:
ab869.enc
cp936.enc
g122345.enc
x2022.enc
abc8859-14.enc
aax5601.enc
cp936-1.enc

so the first solution dont match the correct files :(

How can I match files that have number between 800-999 ?


Solution

  • *[89][0-9][0-9].enc
    

    That uses Bash's "pathname expansion" feature (aka "globbing") to match all files ending with a number between 800 and 999 followed by ".enc". (This is not a regular expression).

    For example, using the above expression you can do this in your script:

    mv *[89][0-9][0-9].enc path/to/destination/
    

    If you need it to also match a file named like "cp850-1.enc", then you would need to change the expression to:

    *[89][0-9][0-9]*.enc