mv/rename 个具有共同部分但未知文件模式的文件

mv/rename files with common part but unknown file pattern

我想重命名不同文件的开头。

输入:

myfilename abc yeswithspaces.abc
myfilename def yeswithspaces.abc
myfilename_abc_nospaces.abc
myfilename def blabla.def
myfilename_abc_mainfile.ok

需要输出:

newfilename abc yeswithspaces.abc
newfilename def yeswithspaces.abc
newfilename_abc_nospaces.abc
myfilename def blabla.def
myfilename_abc_mainfile.ok

如果我只有一个文件 .abc,我有这段代码可以正常工作,但如果有更多文件则不行:

if [ -e "${DOSSIER}/${OLD_NAME}"*.abc ];
    then
        for i in "${DOSSIER}/$OLD_NAME"*.abc; do
        [ -f "$i" ] || continue
        mv "$i" "${i/$OLD_NAME/$NEW_NAME}"
    done
fi

例如,如果 mynamefile 的长度为 10,您可以写成

len = ${#OLD_NAME}
for filename in $(ls | grep .abc) 
do
    suffix = $(filename:$len)
    mv filename $newname$suffix
done

我没有找到正确的地方来解决我的问题 如果是我的卷轴问题。这没关系!

ABC_Files=$(ls "$DOSSIER/$OLD_NAME"*.abc 2> /dev/null | wc -l)
    if [ **"$ABC_Files" != "0"** ];
        then
            for i in "${DOSSIER}/$OLD_NAME"*.abc; do
                [ -f "$i" ] || continue
                mv "$i" "${i/$OLD_NAME/$NEW_NAME}"
            done
    fi

当然假设你知道

$DOSSIER 是路径

$OLD_NAME 是您的实际文件名

$NEW_NAME 是您的新文件名