删除 space 并使用 makefile 通过循环替换文件名中的非 ASCII 字符
Delete space and replace non-ASCII characters in filenames via a loop with a makefile
在一个充满图像文件的文件夹中,我想删除文件名中的所有空格。此外,我希望将非 ASCII 字符替换为破折号 -
。
这需要通过 makefile 来完成。
注意:文件 suffix/extension 之前的最后一个点必须保留。
示例:
"Fig. 3_16mm_300dpi_1to1_obv.tif" --> "Fig-3-16mm-300dpi-1to1-obv.tif"
到目前为止我的方法
IMGPATH = "workfiles/inserts/figures"
cleanfigures:
cd $(IMGPATH) && \
for f in *; \
do \
mv -v "$$f" "$${f//[^a-zA-Z0-9](?=.*?\.)/-}" ; \
done
正则表达式命令 ([^a-zA-Z0-9](?=.*?\.)
) 在我用 https://regex101.com/ 测试时没有问题,但它不会相应地与 makefile 一起工作,因为没有任何内容被重命名或替换。
您说过要将所有非 ASCII 字符更改为 -
。但是,根据您的尝试,您似乎只想将那些不是数字或 "plain" 字母的字符转换为 -
(简单地说,我的意思是不带重音符号,不带花哨,...)。
cleanfigures:
for f in *; \
do \
ext="$${f##*.}" ; \
base="$${f%.*}" ; \
newbase="$${base//[^a-zA-Z0-9 ]/-}" ; \
echo "$$f" "$${newbase// /}.$$ext" ; \
done
在一个充满图像文件的文件夹中,我想删除文件名中的所有空格。此外,我希望将非 ASCII 字符替换为破折号 -
。
这需要通过 makefile 来完成。
注意:文件 suffix/extension 之前的最后一个点必须保留。
示例:
"Fig. 3_16mm_300dpi_1to1_obv.tif" --> "Fig-3-16mm-300dpi-1to1-obv.tif"
到目前为止我的方法
IMGPATH = "workfiles/inserts/figures"
cleanfigures:
cd $(IMGPATH) && \
for f in *; \
do \
mv -v "$$f" "$${f//[^a-zA-Z0-9](?=.*?\.)/-}" ; \
done
正则表达式命令 ([^a-zA-Z0-9](?=.*?\.)
) 在我用 https://regex101.com/ 测试时没有问题,但它不会相应地与 makefile 一起工作,因为没有任何内容被重命名或替换。
您说过要将所有非 ASCII 字符更改为 -
。但是,根据您的尝试,您似乎只想将那些不是数字或 "plain" 字母的字符转换为 -
(简单地说,我的意思是不带重音符号,不带花哨,...)。
cleanfigures:
for f in *; \
do \
ext="$${f##*.}" ; \
base="$${f%.*}" ; \
newbase="$${base//[^a-zA-Z0-9 ]/-}" ; \
echo "$$f" "$${newbase// /}.$$ext" ; \
done