basename
Command in Linux
Summary
The basename
command removes the directory and suffix from file names. It's handy for extracting the essential name component of a file path.
Introduction
The basename
command in Linux is a simple yet powerful utility used to strip the directory and suffix from a filename, leaving only the base name. It's a fundamental tool for scripting and command-line operations where you need to work with just the name of a file or directory without the surrounding path or extension.
Use case and Examples
Extracting the base name from a full path
This command will output:file.txt
. It removes the /path/to/my/
directory part, leaving only the filename. Removing a specific suffix
This command will output:file
. It removes both the /path/to/my/
directory part and the .txt
suffix. Using basename
in a script
#!/bin/bash
FILE="/path/to/my/long/file_name.tar.gz"
BASE_NAME=$(basename "$FILE")
echo "The base name of the file is: $BASE_NAME"
SIMPLE_NAME=$(basename "$FILE" .tar.gz)
echo "The simplified name is: $SIMPLE_NAME"
.tar.gz
extension) of a file using basename
and store them in variables. Commonly used flags
Flag | Description | Example |
---|---|---|
-a , --multiple | Support multiple arguments and treat each as a name. | basename -a file1.txt file2.txt /path/to/file3.txt |
-s , --suffix=SUFFIX | Remove a trailing SUFFIX; implies -a. | basename file.tar.gz -s .tar.gz |
-z , --zero | End each output line with NUL, not newline. | basename -z file1.txt file2.txt (Useful for processing with xargs -0 ). |
--help | Display help information and exit. | basename --help |
--version | Output version information and exit. | basename --version |