把当前目录下的所有文件名由大写(或小写)字母改为小写

Bash:

复制代码
#! /bin/sh 
# Usage: ./low.sh <-l | -u> <target_directory> 
#./low.sh -l directory 为全部转化为小写 
#./low.sh -u directory 为全部转化为大写 
# 
# 第二形参必须是目录,第一形参指定-l或-u 
# 
if [ $# -ne 2 ] ; then 
echo "Usage: ${0} <-l | -u> <target_directory>" 
exit 1 
fi 
if [ ! -d ${2} -o "${1}" != "-l" -a "${1}" != "-u" ] ; then 
echo "Usage: ${0} <-l | -u> <target_directory>" 
exit 1 
fi 
dir=`dirname "${2}"` 
cd ${dir} > /dev/null 2>&1 
if [ $? -ne 0 ] ; then 
echo "Error: checking your ${dir}" 
exit 1 
fi 
exec 1>/dev/null 2>&1 
if [ "${1}" = "-l" ] ; then 
base=`basename "${2}" | tr "[A-Z]" "[a-z]"` 
else 
base=`basename "${2}" | tr "[a-z]" "[A-Z]"` 
fi 
mv -f "`basename ${2}`" "${base}" > /dev/null 2>&1 
for entry in `find ${base}` 
do 
before="." 
for after in `echo "${entry}" | sed -e 's,/, ,g'` 
do 
tmp_entry="${before}/${after}" 
if [ "${1}" = "-l" ] ; then 
before=`echo "${tmp_entry}" | tr "[A-Z]" "[a-z]"` 
else 
before=`echo "${tmp_entry}" | tr "[a-z]" "[A-Z]"` 
fi 
mv -f "${tmp_entry}" "${before}" 
done 
done
复制代码

 

posted on   卖火柴的小东东  阅读(878)  评论(0)    收藏  举报

编辑推荐:
· 记一次 .NET某云HIS系统 CPU爆高分析
· 如果单表数据量大,只能考虑分库分表吗?
· 一文彻底搞懂 MCP:AI 大模型的标准化工具箱
· 电商平台中订单未支付过期如何实现自动关单?
· 用 .NET NativeAOT 构建完全 distroless 的静态链接应用
阅读排行:
· 如果单表数据量大,只能考虑分库分表吗?
· 一款让 Everything 更加如虎添翼的 .NET 开源辅助工具!
· (原创)[开源][.Net Framework 4.5] SimpleMVVM(极简MVVM框架)更
· 冲压车间软件实施
· 干货分享!MCP 实现原理,小白也能看懂

导航

< 2025年4月 >
30 31 1 2 3 4 5
6 7 8 9 10 11 12
13 14 15 16 17 18 19
20 21 22 23 24 25 26
27 28 29 30 1 2 3
4 5 6 7 8 9 10
点击右上角即可分享
微信分享提示