mv /重命名具有公共部分但未知文件模式的文件

问题描述 投票:1回答:2

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

输入:

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

谢谢你的帮助

linux rename mv
2个回答
0
投票

例如,如果mynamefile的长度为10,则可以编写

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

0
投票

我没有找到适合我的问题的地方,如果是我的卷轴问题。还行吧!

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是您的新文件名

© www.soinside.com 2019 - 2024. All rights reserved.