


Summary of some methods for extracting file names and directory names in Linux shell
Many times when using the Linux shell, we need to process the file name or directory name. The usual operation is to extract the file name from the path, extract the directory name from the path, extract the file suffix name, etc. . For example, extract the file name file.txt from the path /dir1/dir2/file.txt, extract the directory /dir1/dir2, extract the file suffix txt, etc.
The following introduces two commonly used methods to perform related operations.
1. Use ${}
1, ${var##*/}
The function of this command is to remove the last ' from the left of the variable var /' character and its left content, returns the right content of the last '/' (excluding this character) from the left. Usage examples and results are as follows:
#As you can see from the running results, using this command, we can extract the file name file.txt we need.
If used in a shell program file, you can use variables to save the result and then use it, such as file=${var##*/}
2, ${var# #*.}
The function of this command is to remove the last '.' character from the left of the variable var and the content to the left, and return the last '.' from the left ( does not contain this character). Usage examples and results are as follows:
#As you can see from the running results, using this command, we can extract the file suffix we need.
If the file has more than one suffix, for example, file.tar.gz, the command ${var##*.} can only extract the last suffix, and what should I do if I want to extract tar.gz? Then you need to use the ${var#*.} command mentioned below.
3, ${var#*.}
The function of this command is to remove the first '.' character from the left of the variable var and the content on the left. Returns the content to the right of the first '.' (excluding this character) from the left. Usage examples and results are as follows:
# As you can see from the running results, multiple suffixes of the file can be extracted using this command.
4, ${var%/*}
The use of this command is to remove the first '/' character from the right side of the variable var and the content on the right side. Returns the content to the left of the first '/' (excluding this character) from the right. Usage examples and results are as follows:
As you can see from the running results, using this command, we can extract the directory where the files we need are located
5 , ${var%%.*}
The use of this command is to remove the last '.' character from the right side of the variable var and the content on the right side, and return the last '.' character from the right side of the variable var. The content to the left of a '.' (without this character). Usage examples and results are as follows:
When we need to create a directory with the same name as the file name (without suffix) corresponding to the corresponding file, we can use this command to operate. For example, the situation of decompressing files is similar to this. When we compress the file file.zip, a directory named file will be created in the same directory as file.zip.
6, ${} summary
In fact, ${} is not specifically used to extract file names or directory names. It is used to extract and replace variables, etc. It can extract a lot of content, not necessarily '/' or '.' in the five examples above. In other words, the above usage method is just a special case of its use.
Seeing the above commands may make people feel very difficult to understand and remember, but in fact, they are all regular.
#: represents the first
% from the left: represents the first
## from the right: Represents the last
from the left. %%: Represents the last
from the right. In other words, # always means counting from the left, % Always means counting from the right.
*: Indicates the content to be deleted. In the case of # and ##, it is located to the left of the specified character ('/' and '.' in the example), which means deleting the specified character and the content to its left; In the case of % and %%, it is located on the right side of the specified character ('/' and '.' in the example), indicating that the specified character and the content to its right are deleted. The positions of '*' here cannot be interchanged, that is, the * sign cannot be placed to the right of # or ##, and vice versa.
For example: ${var%%x*} means to find the last character x from the right, and delete the character x and the characters to its right.
When you see this, you can know that this command is actually very versatile. The above are just some special cases of extracting the naming properties of pointer file names and directory names.
2. basename and dirname
${} are not commands specifically designed to extract file names and directory names, so the basename and dirname commands are specifically designed to do this. Ready.
1. basename
The function of this command is to extract the file name from the path. The usage method is basename NAME [SUFFIX].
1) Extract the file name (with suffix) from the path. The example is as follows:
2) As you can see from the usage of the above command, The suffix (SUFFIX) is optional. Therefore, if you only want to extract the file name file without a suffix, you can also add a suffix name after the variable. The example is as follows:
2, dirname
The function of this command is to extract the directory name from the path. The usage method is dirname NAME
The usage example is as follows:
In this way, the directory where the file.txt file is located is extracted.
Note: This command can not only extract the directory where ordinary files are located, it can also extract the directory where any file is located, such as the directory where the directory is located, as follows:
It extracts the directory dir1 where the directory dir2 is located.
The above is the entire content of this article. I hope it will be helpful to everyone's learning, and I also hope that everyone will support the PHP Chinese website.
For more Linux shell methods to extract file names and directory names, please pay attention to the PHP Chinese website for related articles!

Hot AI Tools

Undresser.AI Undress
AI-powered app for creating realistic nude photos

AI Clothes Remover
Online AI tool for removing clothes from photos.

Undress AI Tool
Undress images for free

Clothoff.io
AI clothes remover

Video Face Swap
Swap faces in any video effortlessly with our completely free AI face swap tool!

Hot Article

Hot Tools

Notepad++7.3.1
Easy-to-use and free code editor

SublimeText3 Chinese version
Chinese version, very easy to use

Zend Studio 13.0.1
Powerful PHP integrated development environment

Dreamweaver CS6
Visual web development tools

SublimeText3 Mac version
God-level code editing software (SublimeText3)

Hot Topics











PHP and Python each have their own advantages, and choose according to project requirements. 1.PHP is suitable for web development, especially for rapid development and maintenance of websites. 2. Python is suitable for data science, machine learning and artificial intelligence, with concise syntax and suitable for beginners.

In PHP, password_hash and password_verify functions should be used to implement secure password hashing, and MD5 or SHA1 should not be used. 1) password_hash generates a hash containing salt values to enhance security. 2) Password_verify verify password and ensure security by comparing hash values. 3) MD5 and SHA1 are vulnerable and lack salt values, and are not suitable for modern password security.

PHP is widely used in e-commerce, content management systems and API development. 1) E-commerce: used for shopping cart function and payment processing. 2) Content management system: used for dynamic content generation and user management. 3) API development: used for RESTful API development and API security. Through performance optimization and best practices, the efficiency and maintainability of PHP applications are improved.

PHP is a scripting language widely used on the server side, especially suitable for web development. 1.PHP can embed HTML, process HTTP requests and responses, and supports a variety of databases. 2.PHP is used to generate dynamic web content, process form data, access databases, etc., with strong community support and open source resources. 3. PHP is an interpreted language, and the execution process includes lexical analysis, grammatical analysis, compilation and execution. 4.PHP can be combined with MySQL for advanced applications such as user registration systems. 5. When debugging PHP, you can use functions such as error_reporting() and var_dump(). 6. Optimize PHP code to use caching mechanisms, optimize database queries and use built-in functions. 7

PHP is still dynamic and still occupies an important position in the field of modern programming. 1) PHP's simplicity and powerful community support make it widely used in web development; 2) Its flexibility and stability make it outstanding in handling web forms, database operations and file processing; 3) PHP is constantly evolving and optimizing, suitable for beginners and experienced developers.

PHP type prompts to improve code quality and readability. 1) Scalar type tips: Since PHP7.0, basic data types are allowed to be specified in function parameters, such as int, float, etc. 2) Return type prompt: Ensure the consistency of the function return value type. 3) Union type prompt: Since PHP8.0, multiple types are allowed to be specified in function parameters or return values. 4) Nullable type prompt: Allows to include null values and handle functions that may return null values.

PHP and Python each have their own advantages, and the choice should be based on project requirements. 1.PHP is suitable for web development, with simple syntax and high execution efficiency. 2. Python is suitable for data science and machine learning, with concise syntax and rich libraries.

PHP and Python have their own advantages and disadvantages, and the choice depends on project needs and personal preferences. 1.PHP is suitable for rapid development and maintenance of large-scale web applications. 2. Python dominates the field of data science and machine learning.
