Renaming screenshots in Linux is a simple process that can make your screenshots more easily accessible and organized. Here are three tips to help you rename screenshots in Linux:
- Rename the file name The first step is to rename the file name of the screenshot. To do this, use the command line interface (CLI) or a text editor such as nano or vim. For example, to rename a screenshot called “MyScreenshot.png” to “Screenshot_2.png” using nano, type: nano ~/Pictures/MyScreenshot/Screenshot_2.png
- Use an editor with a shortcut key If you want to rename a screenshot using an editor with a shortcut key, you can use one of the following editors: vi, emacs, or gedit. For example, to rename a screenshot called “MyScreenshot” using vi, type: vi ~/Pictures/MyScreenshot/Screenshot_2.png
Many desktop Linux systems save screenshots with names like Screenshot from 2020-11-29 18-57-51.png. Often, what you really needed was to rename the files to something more obvious like webinar1.png, webinar2.png, and so on. Fortunately, renaming a bunch of files is really easy to do on the Linux command line.
The Bash shell is very versatile, and provides different ways to evaluate values and expand variables. One neat evaluation is arithmetic evaluation. To perform this evaluation, wrap your arithmetic statement with $(( and )).
The evaluation can also include variable expansion, like $sum to resolve into a value. But for convenience, any Bash variables listed between $(( and )) are expanded automatically. For example, to increment a variable count by 1, you could type:
This is the same as typing:
Arithmetic expansion supports the same operators found in other programming languages, including + and - for addition and subtraction, * and / for multiplication and division, and % for remainder. You can also use ++ and – to increment and decrement a value in a variable. Check the man page for Bash, and scroll down to ARITHMETIC EVALUATION, for the full list of supported operators and their precedence.
To rename all my screenshots, I needed to write this one-line Bash command:
But what does this do?
The first part of the command, n=1, initializes the variable n to 1.
Then I use a for loop to operate on all the files that start with Screenshot and end with the .png extension. These are usually all the screenshots I captured during my last webinar. If I needed to be more precise, I might include the date in that file specification, such as Screenshot from 2020-11-29*.png. The backslashes are literal escapes to preserve the spaces in the file name.
Each iteration of the for loop stores a file name in the f variable. So the mv command mv -v “$f” webinar$n.png renames each file to my preferred file names like webinar1.png , webinar2.png , and so on. I need quotes around the $f variable expansion so the spaces in Screenshot from YYYY-MM-DD hh-mm-ss.png don’t cause problems in my mv command. If you get an error like mv: target ‘webinar1.png’ is not a directory, you probably didn’t put quotes around the $f.
Finally, I increment the value in the n variable so it’s ready for the next iteration in the loop. The arithmetic expansion n=$(( n + 1 )) increments the n variable by 1.