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

时间:2017-06-09 19:52:17

标签: linux windows bash batch-file

我有数百个文件在特定模式中具有名称,我想仅获取文件名的一部分,例如

如果文件名是REE_45K.txt或REE_46B.txt或REE_21K.txt或REE_229N.txt则REE9999G.txt 我想只显示45K 46B,21K,229N,9999G

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

findstr _.*.  *.*  i found this command working for windows , can u verify it 

3 个答案:

答案 0 :(得分:1)

对于linux上的bash:

#!/bin/bash
filename="REE_45K.txt"
no_ext="${filename%.*}"  # "REE_45K"
echo "${no_ext##*_}"

给出45K

答案 1 :(得分:0)

对于linux bash:

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

答案 2 :(得分:0)

以下是在Windows批处理文件中替换字符串的方法。 {var} =%{var}:{find} = {relacement}% 以下是您的示例:

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

输出:

"REE_45K.txt"
"45K"