Step-by-step guide for specifying file names in Linux with patterns
How it works
The shell provides a way to construct patterns, called file name expansions that specify a group of files. You can use them when specifying file and directory names as arguments to any tool or application.
The following lists the various file expansion characters and their meaning.
- *
- The asterisk matches a series of zero or more characters, and is some- times called the “wildcard” character. For example, * alone matches all file names, a* matches all file names that consist of an ‘a’ character followed by zero or more characters, and a*b matches all file names that begin with an ‘a’ character and end with a ‘b’ character, with any (or no) characters in between.
- ?
- The question mark matches exactly one character. Therefore, ? alone matches all file names with exactly one character, ?? matches all file names with exactly two characters, and a? matches any file name that begins with an ‘a’ character and has exactly one character following it.
- [list]
- Square brackets match one character in list. For example, [ab] matches exactly two file names: ‘a’ and ‘b’. The pattern c[io] matches ‘ci’ and ‘co’, but no other file names.
- ˜
- The tilde character expands to your home directory. For example, if your username is joe and therefore your home directory is ‘/home/joe’, then ‘˜’ expands to ‘/home/joe’. You can follow the tilde with a path to specify a file in your home directory—for example, ‘˜/work’ expands to ‘/home/joe/work’.
One-to-One Live Linux Classes
Coding Bootcamps school offers One-to-One Live Linux Classes for Beginners.
Brackets also have special meaning when used in conjunction with other characters, as described by the following.
- – A
- hyphen as part of a bracketed list denotes a range of characters to match—so [a-m] matches any of the lowercase letters from ‘a’ through ‘m’. To match a literal hyphen character, use it as the first or last character in the list. For example, a[-b]c matches the files ‘a-c’ and ‘abc’.
- !
- Put an exclamation point at the beginning of a bracketed list to match all characters except those listed. For example, a[!b]c matches all files that begin with an ‘a’ character, end with a ‘c’ character, and have any one character, except a ‘b’ character, in between; it matches ‘aac’, ‘a-c’, ‘adc’, and so on.
You can combine these special expansion characters in any combination, and you can specify more than one pattern as multiple arguments. The following examples show file expansion in action using some Linux commands.
- To list all files in the ‘/usr/bin’ directory that have the text ‘tex’ anywhere in their name, type:
$ ls /usr/bin/*tex*
- To copy all files whose names end with ‘.txt’ to the ‘doc’ subdirectory, type:
$ cp *.txt doc
- To output a verbose listing of all files whose names end with either a ‘.txt’ or ‘.text’ extension, sorting the list so that newer files are listed first, type:
$ ls -lt *.txt *.text
- To move all files in the ‘/usr/tmp’ directory whose names consist of the text ‘song’ followed by an integer from 0 to 9 and a ‘.cdda’ extension, placing them in a directory ‘music’ in your home directory, type:
$ mv /usr/tmp/song[0-9].cdda ˜/music
- To remove all files in the current working directory that begin with a hyphen and have the text ‘out’ somewhere else in their file name, type:
$ rm -- -*out*
- To concatenate all files whose names consist of an ‘a’ character followed by two or more characters, type:
$ cat a??*
Resources- Self-Paced Linux Courses
If you like to learn more about Linux, taking the following courses is highly recommended:
- Introduction to Linux OS
- Intro to Linux Bash Scripting
- Advance Linux Bash Scripting
- Linux Management for System Admins
- How to manage Red Hat or CentOS Linux servers- Intermediate level
Resources- Free Courses
Here is the list of our 9 free self-paced courses that are highly recommended:
- IT Career Roadmap Explained
- Web Design with Bootstrap
- User Experience Best Practices
- Intro to Search Engine Optimization
- Web Design with WordPress
- Introduction to Drupal CMS
- Intro to Joomla CMS
- Intro to Cybersecurity
- Introduction to Cloud Technology
Resources- Live Linux Courses
If you like to learn more about Linux, take the following live Linux classes is highly recommended:
- Linux shell and bash scripting via hybrid training
- Hands-on Linux programming for system administration via hybrid training
- Red Hat Certified System Administrator Live Training Class
- Live training class for obtaining Red Hat Certified Engineer certification
- Essential Linux Commands in 6 Hours by Hands-on Exercises
- Linux Bash & Shell Scripts in 6 Hour by Hands-on Exercises
- Linux and bash scripting- Private tutoring sessions
Resources- Tutorials
If you like to learn more about Linux, reading the following articles and tutorials is highly recommended:
- Comprehensive Review of Linux File System Architecture and Management
- Comprehensive Review of How Linux File and Directory System Works
- Comprehensive list of all Linux OS distributions
- Comprehensive list of all special purpose Linux distributions
- Linux System Admin Guide- Best Practices for Making and Managing Backup Operations
- Linux System Admin Guide- Overview of Linux Virtual Memory and Disk Buffer Cache
- Linux System Admin Guide- Best Practices for Monitoring Linux Systems
- Linux System Admin Guide- Best Practices for Performing Linux Boots and Shutdowns