我有一个文件名
"PHOTOS_TIMESTAMP_5373382"
我想从此文件名中提取"PHOTOS_5373382"
并添加"ABC"
,即最终希望它看起来像
"abc_PHOTOS_5373382"
。
答案 0 :(得分:4)
echo "PHOTOS_TIMESTAMP_5373382" | awk -F"_" '{print "ABC_"$1"_"$3}'
echo
将为awk
命令提供输入。
awk
命令使用选项'_'
对输入的字符-F
进行数据标记化。
可以使用$n
访问单个令牌(从1开始),其中n
是令牌号。
答案 1 :(得分:1)
您需要在shell上直接使用以下命令序列,最好是bash
shell(或)作为一个完整的脚本,它将单个参数转换为要转换的文件
#!/bin/bash
myFile="$1" # Input argument (file-name with extension)
filename=$(basename "$myFile") # Getting the absolute file-path
extension="${filename##*.}" # Extracting the file-name part without extension
filename="${filename%.*}" # Extracting the extension part
IFS="_" read -r string1 string2 string3 <<<"$filename" # Extracting the sub-string needed from the original file-name with '_' de-limiter
mv -v "$myFile" ABC_"$string1"_"$string3"."$extension" # Renaming the actual file
以
运行脚本$ ./script.sh PHOTOS_TIMESTAMP_5373382.jpg
`PHOTOS_TIMESTAMP_5373382.jpg' -> `ABC_PHOTOS_5373382.jpg'
答案 2 :(得分:0)
虽然我喜欢awk
Native shell解决方案
k="PHOTOS_TIMESTAMP_5373382"
IFS="_" read -a arr <<< "$k"
echo abc_${arr[0]}_${arr[2]}
Sed解决方案
echo "abc_$k" | sed -e 's/TIMESTAMP_//g'
abc_PHOTOS_5373382