【发布时间】:2023-03-25 03:40:01
【问题描述】:
我有一个包含一堆 JPEG 的文件夹,我想检查它们的文件名是否符合我的文件名标准:(1) 没有空格,(2) 没有下划线,(3) 没有连续的大写字母,(4) 和每个文件名应以“-original.jpg”结尾。我输出任何错误的文件名,然后提示用户是否继续。下面的脚本非常适用于条件 (1)、(2) 和 (4),但我想将条件 (3) 添加为另一个 elseif。
i=0 # Initialize issue counter
# Detect and indicate any filename issues
for file in *.jpg; do
if [[ $file = *" "* ]] | [[ $file = *"_"* ]]
then
echo "Filename issue: " $file
i=$((i+1))
elif [[ $file != *"-original.jpg" ]]
then
echo "Filename issue: " $file
i=$((i+1))
fi
done
# If condition satisfied, provide indication of no filename issues
if [[ $i == 0 ]]
then
echo "No filename issues"
fi
echo
# Prompt user if they want to continue with image processing
read -p "Proceed with image processing? (enter 'y' or 'n') " yn
case $yn in
[Yy]* )
echo
echo "PROCEED"
echo
break;;
[Nn]* ) echo; exit;;
* ) echo "Please answer yes or no. ";;
esac
我能够将条件 (3) 拼凑在一起,它检测到连续的大写字母,但我不知道如何让它输出它正在解析的更大的字符串 ($name) 和/或将变量传递回较大的 shell 脚本。最好的方法是什么?
echo "$name" |
awk '{
for (i=2; i<=NF; i++) {
if ($i ~ /[A-Z]/ && $(i+1) ~ /[A-Z]/) {
echo "capitalization problem"
}
echo "no capitalization problem"
}
}'
【问题讨论】: