我有几个文件的名称为:
ID_Italy.txt
ID2_USA.txt
ID3_Germany.txt
.....
如果我想在 _ 之前打印,我可以:
for file in *.txt; do print "${file%_*}";done
输出:
ID
ID2
ID3
如果我想打印并删除扩展名:
for file in *.txt; do print "${file%.*}";done
输出:
ID_Italy
ID2_USA
ID3_Germany
但是,我只想取介于 _ 和 . 并具有以下输出:
Italy
USA
Germany
那怎么打印?
已编辑,没有 tempvar:
我使用命令创建了文件,
touch
然后运行了fx
脚本:如果您使用与 Bash 不同的 zsh(支持嵌套参数替换),您可以执行以下操作:
或者在 Bash 中使用数组解决方案:
使用该
basename
实用程序删除文件名后缀和变量替换以删除名称中直到最后一个下划线的位:bash
:标准
POSIX
sh
: