Linux 使用命令显示文件名的一部分

Linux 使用命令显示文件名的一部分,linux,windows,bash,batch-file,Linux,Windows,Bash,Batch File,我有成百上千个文件,它们的名称都是特定的模式,例如,我只想得到文件名的一部分 例如,如果文件名是REE_45K.txt或REE_46B.txt或REE_21K.txt或REE_229N.txt或ree99g.txt 我只想显示45K 46B、21K、229N、999G 如果可能,请提供Linux和windows版本命令 findstr _.*. *.* i found this command working for windows , can u verify it 对于linux上的

我有成百上千个文件,它们的名称都是特定的模式,例如,我只想得到文件名的一部分

例如,如果文件名是REE_45K.txt或REE_46B.txt或REE_21K.txt或REE_229N.txt或ree99g.txt 我只想显示45K 46B、21K、229N、999G

如果可能,请提供Linux和windows版本命令

findstr _.*.  *.*  i found this command working for windows , can u verify it 
对于linux上的bash:

#!/bin/bash
filename="REE_45K.txt"
no_ext="${filename%.*}"  # "REE_45K"
echo "${no_ext##*_}"
为linux bash提供
45K

for filename in REE_45K.txt  REE_46B.txt  REE_21K.txt
do
  echo $filename |sed  's/REE_\(.*\).txt/\1/g'
done
它给出:

45K
46B
21K

以下是如何在windows批处理文件中替换字符串。 {var}=%{var}:{find}={relace}% 下面是一个例子:

@echo off
set filename="REE_45K.txt"
echo %filename%
set filename=%filename:REE_=%
set filename=%filename:.txt=%
echo %filename%
输出:

"REE_45K.txt"
"45K"

从完整路径开始还是仅从文件名开始?仅文件名@Cheloidethis适用于windows,但并不总是。。findstr/s.*.*>a、 TXT它总是文件名的最后三个字符,还是最后一个下划线和扩展名之间的位?@SomethingDark不,它是下划线和点之间的,谢谢,在谷歌搜索时我找到了这个命令grep-h'??*路径,如果possible@user143252请参阅此链接: