Console Command Examples
Linux specific console command examples
Examples from other pages included. References also included. This document is in the form of "what you want to do" and "how to do it" taken from our old Linux forum with questions from linux users.
There are many very good and useful examples in our old Advanced Shell Operations.
Contents
change file case UPPERCASE to lowercase in the same directory
The easiest way is this simple command which uses rename:
rename 'y/A-Z/a-z/' *
Another example using tr:
for i in *; do mv $i `echo $i | tr [:upper:] [:lower:]`; done
Shell script example from the old Advanced Shell Operations page
for FILE in * # use mv -i to avoid overwriting files do # uses the tr command to convert case mv -i "$FILE" `echo "$FILE" | tr '[A-Z]' '[a-z]'` 2> /dev/null done
These may fail on unsupported file systems such as FAT32 with an error such as:
mv: 'IMAG0001.JPG' and 'imag0001.jpg' are the same file ./IMAG0004.JPG not renamed: ./imag0004.jpg already exists
In this case you will have to move when you change case and move back again. Here we will change an uppercase file extension to a lowercase one under FAT32
rename 's/\.JPG$/\.jpeg/' *.JPG rename 's/\.jpeg$/\.jpg/' *.jpeg
There are plenty of other ways to accomplish such tasks.
Update 2024: You're at the CLI on a Linux system bash shell observing files from a Samba mounted drive connected to a NAS or file server with some kind of FAT file system such as FAT32 and you wish to convert filenames and extensions with upper or mixed case to all lower case:
for f in *; do temp="${f}_temp"; mv -- "$f" "$temp"; done && for f in *_temp; do mv -- "$f" "$(echo "${f%_temp}" | tr '[:upper:]' '[:lower:]')"; done
execute multiple BASH shell commands
How to run shell commands sequentially or at the same time entered on a single line.
echo 1 sleep 5s echo 2
(A) SEQUENTIAL: run several commands using the control operator ";" (semicolon) which will execute them sequentially. The shell will wait for each command to terminate in turn. The return status is the exit status of the last command executed.
echo 1; sleep 5s; echo 2
(B) SIMULTANEOUS: run several commands using the control operator "&" (ampersand) which will allow executing of all commands simultaneously.
echo 1 & sleep 5s & echo 2
(C) SEQUENTIAL CONDITIONAL: run several commands using double ampersands will prevent subsequent commands in the line from running of the preceding exits with exit status 1. Use the double-ampersand operator in BASH will provide conditional execution. Two commands separated by the double ampersands tells the shell to run the first command and then run the second command only if the first command succeeds with an exit status 0. It will behave like example (A) in that the shell will wait for each command to terminate, with the exception that the command must terminate successfully to continue with the next.
echo 1 && sleep 5s && echo 2
Hopefully this provides some basic clarification of how the bash shell handles multiple commands per line.
search for files
The two primary commands to accomplish this are
- find
- locate
detect matching / duplicate files comparing two directories
Two directories both containing files. Determine if the same file (by filename only) exists in both directories.
DIR1="/home/nicolep/dir1"; DIR2="/mnt/flash/dir1"; comm -12 <(ls -1A "$DIR2" | sort) <(ls -1A "$DIR1" | sort) | xargs -I{} find "$DIR1" -maxdepth 1 -name {} -ls
Learn how to use Find and Locate and view examples.
Related Pages
If what you're looking for isn't on this page, try some of these related pages:
- Console Command Examples
- Advanced Shell Operations
- Console Command Reference
- How Do I: A Linux Q&A