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 是您的新文件名
我想重命名不同文件的开头。
输入:
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 是您的新文件名