在 Bash 中,您可以使用参数扩展来删除文件名的一部分。以下是一些常见的方法:
#
和 ##
删除前缀#
用于删除从字符串开头开始的最短匹配部分。##
用于删除从字符串开头开始的最长匹配部分。例如,假设您有一个文件名为 prefix_example.txt
,并且您想要删除前缀 prefix_
:
filename="prefix_example.txt"
new_filename="${filename#prefix_}"
echo "$new_filename" # 输出: example.txt
如果您想要确保删除最长的匹配前缀(尽管在这个例子中结果相同):
new_filename="${filename##prefix_}"
echo "$new_filename" # 输出: example.txt
%
和 %%
删除后缀%
用于删除从字符串末尾开始的最短匹配部分。%%
用于删除从字符串末尾开始的最长匹配部分。例如,假设您有一个文件名为 example_suffix.txt
,并且您想要删除后缀 _suffix.txt
:
filename="example_suffix.txt"
new_filename="${filename%_suffix.txt}"
echo "$new_filename" # 输出: example
如果您想要确保删除最长的匹配后缀(尽管在这个例子中结果相同):
new_filename="${filename%%_suffix.txt}"
echo "$new_filename" # 输出: example
rename
命令批量重命名如果您有多个文件需要重命名,可以使用 rename
命令(也称为 prename
或 file-rename
)。这是一个 Perl 脚本,可以更灵活地处理复杂的重命名任务。
例如,将所有以 prefix_
开头的文件重命名为去掉前缀的文件名:
rename 's/^prefix_//' prefix_*.txt
这将把所有匹配 prefix_*.txt
模式的文件名中的 prefix_
部分删除。
*
来匹配任意字符序列。通过上述方法,您可以根据需要灵活地删除文件名的一部分。
领取专属 10元无门槛券
手把手带您无忧上云