获取文件名的一部分
Get part of filename
我尝试仅使用一个 bash 变量来获取文件 num23.txt
的编号。
User@User-MacBook-Pro:~$ f=num23.txt
User@User-MacBook-Pro:~$ echo $f
num23.txt
User@User-MacBook-Pro:~$ echo ${f%.txt}
num23
User@User-MacBook-Pro:~$ echo ${f/num}
23.txt
User@User-MacBook-Pro:~$ echo ${f/num%.txt}
num23.txt
User@User-MacBook-Pro:~$
我尝试只使用 %
和 /
运算符。它如何将最后一个命令更改为仅作为输出 23
?
取号
对于您的特定示例(当您只有一个只有数字的子字符串时):
echo ${f//[^0-9]/}
或
echo ${f//[^[:digit:]]/}
获取前缀和后缀之间的字符串
但是如果你想指定该字符串的后缀和前缀,你有以下选择:
echo `basename ${f/num} .txt`
因为 echo ${f/num%.txt}
无法正常工作并且 Bash 不允许您 运行 像这样 echo ${${f/num}%.txt}
.
我尝试仅使用一个 bash 变量来获取文件 num23.txt
的编号。
User@User-MacBook-Pro:~$ f=num23.txt
User@User-MacBook-Pro:~$ echo $f
num23.txt
User@User-MacBook-Pro:~$ echo ${f%.txt}
num23
User@User-MacBook-Pro:~$ echo ${f/num}
23.txt
User@User-MacBook-Pro:~$ echo ${f/num%.txt}
num23.txt
User@User-MacBook-Pro:~$
我尝试只使用 %
和 /
运算符。它如何将最后一个命令更改为仅作为输出 23
?
取号
对于您的特定示例(当您只有一个只有数字的子字符串时):
echo ${f//[^0-9]/}
或
echo ${f//[^[:digit:]]/}
获取前缀和后缀之间的字符串
但是如果你想指定该字符串的后缀和前缀,你有以下选择:
echo `basename ${f/num} .txt`
因为 echo ${f/num%.txt}
无法正常工作并且 Bash 不允许您 运行 像这样 echo ${${f/num}%.txt}
.