I have a list of files with consecutive numbers as suffixes. I would like to copy only a range of these files. How can I specify a range as part of my cp command.
$ls
P1080272.JPG* P1080273.JPG* P1080274.JPG* P1080275.JPG* P1080276.JPG* P1080277.JPG*
P1080278.JPG* P1080279.JPG* P1080280.JPG* P1080281.JPG* P1080282.JPG* P1080283.JPG*
I would like to copy files from P1080275.JPG to P1080283.JPG with something similar to:
$cp P10802[75-83].JPG ~/Images/.
Is there a way to do this?
You were very close. Your question was almost the correct syntax:
To iterate over a range in bash:
Applying the same in your case:
Zsh, with the extendedglob option has the globbing (pattern matching) operator.
will match filenames in the current directory that match that pattern (beware that P1080275.JPG matches but so does P108020000000075.JPG)
On the other end, the {x...y} string expansion operator (supported by zsh and recent versions of bash and ksh93), expands to the strings from x to y, regardless of what files there are in the current directory.
will copy the matching files, so will
But you'll get errors if for instance P1080281.JPG doesn't exist.
Would this work for you: