我需要一些帮助来重命名我正在使用bash的大量文件 非常切割_Filestore以及在key和crt之后结束的所有内容 文件。谢谢你的帮助
当前档案
_Filestore.dev.orange.key_12345_1
_Filestore.dev.orange.crt_57397_1
_Filestore.dev.apple.key_95672566_1
_Filestore.dev.apple.crt_22258_1
需要它看起来像这样
dev.orange.key
dev.orange.crt
dev.apple.key
dev.apple.crt
答案 0 :(得分:1)
使用简单的直接for循环。使用regEx
中的bash
与=~
运算符(从bash 3.0
开始支持)来提取文件重命名所需的子字符串。您可以直接在命令行上运行它。
for file in _Filestore*
do
[[ $file =~ ^_Filestore.(.*)_([[:digit:]]+)_([[:digit:]])$ ]] && subString="${BASH_REMATCH[1]}"
mv -v "$file" "$subString"
done
答案 1 :(得分:-1)
试试这个:
# file.txt
_Filestore.dev.orange.key_12345_1
_Filestore.dev.orange.crt_57397_1
_Filestore.dev.apple.key_95672566_1
_Filestore.dev.apple.crt_22258_1
cat file.txt | sed&#39> s / Filestore .// g' | sed' s / key 。 / key / g' | sed' s / crt _。 / crt / g' > FILE2.TXT
# file2.txt
dev.orange.key
dev.orange.crt
dev.apple.key
dev.apple.crt
答案 2 :(得分:-1)
#!/bin/bash
for filename in `ls`; do
echo "the next file is $filename"
mv $filename `echo $filename | grep -oE "dev.*\...."`
done
获取所有文件,然后使用regex
和grep
重新命名。