Filename Expansion (Globbing)
The unappealing word globbing comes from the original command /etc/glob, written by Dennis Ritchie, one of the original authors of Unix. It seems that glob was short for “global” because it was intended that it would search the entire $PATH. The original implementation searched only in /bin, which was considered to be a bug. Today, the which command performs this role of glob, but it is from glob that we now have the word globbing, which means “searching for files using wildcard expansion.” It still does not reference the PATH variable.
The two key characters in filename expansion are the question mark (?) and the asterisk (*). The ? matches any single character; the * matches any sequence of characters. So given a set of files containing various patterns, you can use these wildcards to find the matching files.
$ ls abc abcdef abcdefghijk abc.php abc.txt ABC.txt def mydoc.odt xyz.xml ABC ABCDEF abcdef.odt abctxt abc.TXT alphabet DEF xyz $ ls a* abc abcdefghijk abc.php abc.txt alphabet abcdef abcdef.odt abctxt abc.TXT $ ls A* ABC ABCDEF ABC.txt $ ls A?? ABC $ ls a?? abc
This feature is often used to find all files with a given extension. Note that *txt is different from *.txt.
Although the convention of .txt, .sh, or .conf at the end of a filename is widely used in Unix and Linux, the extension itself ...
Get Shell Scripting: Expert Recipes for Linux, Bash, and More now with the O’Reilly learning platform.
O’Reilly members experience books, live events, courses curated by job role, and more from O’Reilly and nearly 200 top publishers.