社区
系统维护与使用区
帖子详情
哪位大侠给个将一个目录下的所有文件名都由大写改成小写的shell或者c程序,121分呀!
cloudred
2001-03-13 07:30:00
加精
如题!
...全文
425
14
打赏
收藏
哪位大侠给个将一个目录下的所有文件名都由大写改成小写的shell或者c程序,121分呀!
如题!
复制链接
扫一扫
分享
举报
写回复
配置赞助广告
用AI写文章
14 条
回复
切换为时间正序
请发表友善的回复…
发表回复
打赏红包
hem
2001-05-17
打赏
举报
回复
我想 Perl 的正则表达式处理这个问题是很简单的 。 下回有空贴出来。
hem
2001-05-17
打赏
举报
回复
很好 , 源码相送。
hem
2001-05-17
打赏
举报
回复
很好 , 源码相送。 程序也写得不错
clansoft
2001-04-29
打赏
举报
回复
补充:程序命名为cvlc, 递归调用!
clansoft
2001-04-29
打赏
举报
回复
这还需要C吗?杀机用牛刀啊!
cvitem()
{
mv $1 `dirname $1`/`basename $1 | tr 'ABCDEFGHIJKLMNOPQRSTUVWXYZ' 'abcdefghijklmnopqrstuvwxyz'`
}
[ $# = 0 ] && { echo "Usage: lcdir item1 item2 ..."; exit; }
for item in $*
do
[ "`dirname $item`" != "`basename $item`" ] && {
[ -d $item ] &&
{
for subitem in `ls $item`
do
cvlc $item/$subitem
done
}
cvitem $item
}
done
wiler
2001-03-23
打赏
举报
回复
to cloudred:
怎么不给分啊?
cloudred
2001-03-23
打赏
举报
回复
我也正着急呢,我现在给分的窗口没有呀?怎么会事?
wiler
2001-03-19
打赏
举报
回复
这是我的c程序,在sco unix 5.0 下编译通过。
#include <stdio.h>
#include <fcntl.h>
#include <sys/types.h>
#include <dirent.h>
#include <sys/stat.h>
int ToUpper(char *);
void main(int ac,char **av)
{
DIR *dp;
struct dirent *dirptr;
struct stat stbuf;
char File_name[128];
char old_dir[1024][128];
int Cur_pos = -1; // 当前位置
int level = 0, levelnum[50], i;
for( i = 0; i < 50 ; i++ )
levelnum[i] = 0;
if( ac != 2 ){
printf(" Usage : %s path \n", av[0] );
exit(0);
}
else
if( chdir(av[1]) != -1 )
dp = opendir(".");
else
perror("opendir");
while(1){
while( ( dirptr = readdir(dp) ) != NULL ){
if( stat( dirptr->d_name, &stbuf ) == -1 ){
perror("stat");
exit(1);
}
if( strcmp( dirptr->d_name,"." ) != 0&& strcmp( dirptr->d_name, ".." ) != 0 ){
strcpy(File_name,dirptr->d_name);
ToUpper(File_name);
rename( dirptr->d_name,File_name );
printf("RENAME %s => %s OK\n",dirptr->d_name,File_name);
}
/* 保存目录 */
if( ( stbuf.st_mode&S_IFMT ) != S_IFREG )
if( strcmp( dirptr->d_name,"." ) != 0&& strcmp( dirptr->d_name, ".." ) != 0 ){
strcpy( old_dir[++Cur_pos],File_name);
levelnum[ level ] ++;
}
}
closedir(dp);
if( Cur_pos == -1 ) break;
else {
if( levelnum[ level ] == 0 ){
chdir("..");
if( levelnum[ --level ] == 0 ){
chdir("..");
level --;
if ( level == -1 )
break;
}
}
if( chdir(old_dir[Cur_pos]) != -1 ){
levelnum[ level ] --;
level ++;
Cur_pos --;
dp = opendir(".");
}
else
perror("opendir");
}
}
exit(0);
}
int ToUpper(char *str)
{
int i;
for(i = 0; i < strlen(str) ; i++ ){
if( str[i] <= 'z' &&str[i] >= 'a' )
str[i] = toupper( str[i] );
}
return 1;
}
cloudred
2001-03-18
打赏
举报
回复
willbe:对!当然是越完善越好了。
下面是我根据out4b的程序修改后的
#!/bin/sh
#notice chmod +x to this script before running
#
for f in `find . -name "*"`
do
echo $f>tmp1
tr "[:upper:]" "[:lower:]" < tmp1 >tmp2
mv $f `cat tmp2`
done
rm tmp1
rm tmp2
当然不能修改目标目录下的大写子目录的文件名,解决了我遇到的第二个问题。
WillBe
2001-03-18
打赏
举报
回复
我本来很有兴趣些个C程序完成这个功能的,可惜近来有点忙,稍后再写。
WillBe
2001-03-16
打赏
举报
回复
要求目标目录下的子目录中的文件都要改吗?
out4b
2001-03-14
打赏
举报
回复
#!/bin/sh
#notice chmod +x to this script before running
#
for f in `find . -name "*"`;
do
mv $f `echo $f | tr '[A-Z] '[a-z]'`
done
out4b
out4b
2001-03-14
打赏
举报
回复
sorry, 分号应该去掉. 另外关于大写的目录名, 可以用比较麻烦一点的方法写出来, 这里我没有unix环境, 暂时就不试了. 以后再贴吧.
out4b
cloudred
2001-03-14
打赏
举报
回复
out4b兄:
上面的shell在我机子上运行有两个问题:
第一个还好说:从理论上说,如果当前目录下面有一大写的子目录,子目录里有一些大写的文件,那肯定不行了!因为可能子目录还没改成小写。这个要说也不算大问题!
致命的是,除掉上面问题的影响,还是不能转换成功,运行的结果好象是
mv 原来的文件名 原来的文件名,
挺怪的,如果目录下面只有一个文件名AAA的话,运行后变成了aaa,多了的情况好象就不行了。
对于for语句后的“分号”,我凭感觉觉得好象放的不是位置,请明示
今天很感伤,乱写的一点东西,以勉励自己
离毕业将近有十个月了,参加工作一年半;感觉每天都在做重复的事,技术没有得到很好的提高,就像个无头苍绳,没有目标,没有方向,整个公司的环境令人窒息,不满声每天充斥着我的耳朵,我每天都在坚持着,希望自己能够适应,呆到自己认为该走的时候,我以为我能够坚持,但我现在感觉我错了,每次的忍让只能让别人觉得你的懦落与无知,重新认清这个世界,定位自己,我想这是我现在要做的事情.一味地消沉最终伤害的还是我自己. -...
AI-basic.xmind
AI-basic
Python 串口日志采集与滚动保存工具(嵌入式开发+Python/串口+日志采集源码+设备运行记录)
提供带 UTC 时间戳的十六进制收包记录、按文件大小滚动保存及可选断线重连。面向开发板调试和长时间运行记录;每条记录对应一次 read 得到的数据块,不保证与协议帧或文本行一一对应。 适用于嵌入式软件开发人员、驱动开发入门者及相关技术学习者。资源包含源码或模板、使用说明及验证范围说明。Python 3.10+;pyserial 3.5;Windows 或 Linux;具备串口访问权限。 功能边界见 README.md,实际验证情况见 TESTING.md。
无线充电
程序
-下载即用.zip
代码下载链接: https://pan.quark.cn/s/37189d21223e STM8S103F3属于STMicroelectronics公司研发的STM8S系列微控制器,该芯片在众多嵌入式系统设计中得到普遍应用,尤其是在对低能耗与高性能有较高要求的场景中。这款微控制器内置8位中央处理器,配备了完整的数字信号处理工具集,涵盖了定时器单元、串行通信端口以及多种外部设备接口。 无线供电方案是基于STM8S103F3构建的,其核心目标在于达成无需物理接触的电能传输。这项技术主要运用电磁感应理论,借助发送端与接收端线圈间磁场的变化来实现能量传递。在无线供电架构中,STM8S103F3通常担任控制核心的角色,负责监督并调节充电环节中的各项指标,以此确保操作安全并提升工作效率。 1. **ADC(模拟数字转换器)**:在无线供电系统中,ADC负责将探测到的电压或电流信号转换为数字形式,使微控制器能够进行解析与操控。例如,它可用于测量接收端线圈的电压值,借此评估充电状况及效能。 2. **PWM(脉宽调制)**:PWM是调控电源输出的常用手段,通过变更脉冲宽度来控制平均功率输出。在无线供电系统中,PWM或许会用于调节发射端功率的输出水平,以应对不同的充电需求及距离差异。借助精准控制PWM信号,能够维持充电电流的稳定,进而保障设备安全进行充电。 3. **软件体系**:无线供电方案可能由多个组成部
分
构成,例如初始设定、异常识别、通信规约处理等。这些组件通过周密规划的架构协同运作,共同完成无线供电的全部功能。 4. **安全功能**:方案可能集成过温、过压、过流防护机制,一旦侦测到非正常情形,可自动中断电源供应或降低功率输出,以避免设备受损。 5. **通信规约**:无...
如何推动区域产业智能化升级,提升园区企业智能制造水平?.docx
如何推动区域产业智能化升级,提升园区企业智能制造水平?
系统维护与使用区
19,615
社区成员
74,556
社区内容
发帖
与我相关
我的任务
系统维护与使用区
系统使用、管理、维护问题。可以是Ubuntu, Fedora, Unix等等
复制链接
扫一扫
分享
社区描述
系统使用、管理、维护问题。可以是Ubuntu, Fedora, Unix等等
社区管理员
加入社区
获取链接或二维码
近7日
近30日
至今
加载中
查看更多榜单
社区公告
暂无公告
试试用AI创作助手写篇文章吧
+ 用AI写文章