社区
系统维护与使用区
帖子详情
哪位大侠给个将一个目录下的所有文件名都由大写改成小写的shell或者c程序,121分呀!
cloudred
2001-03-13 07:30:00
加精
如题!
...全文
416
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语句后的“分号”,我凭感觉觉得好象放的不是位置,请明示
Linux获取当前
目录
名,
shell
获取当前
目录
名
本文介绍了一种在
Shell
脚本中简便地获取并利用当前工作
目录
名称的方法,使用${PWD##*/}
Simple
Shell
for Application Debug
本文介绍了
一个
简单的调试
Shell
程序
,用户可以直接在
Shell
中通过输入函数名和参数来调用应用
程序
内部的函数,如进行加法运算或打印十六进制字符串。该
程序
使用C语言编写,包括了函数解析和参数处理等功能。
使用
Shell
Excete打开pdf文件。请问
大侠
这段
程序
错误出现在哪儿?该怎么改正确?
本文介绍了
一个
使用Delphi处理包含特殊字符路径的文件的应用实例。通过
一个
简单的
程序
演示了如何识别并处理文件路径中存在的特殊字符,如引号、书名号等,并通过调用外部
程序
打开这些文件。
终于读完了《跟我一起写 Makefile》 !也算了解了一下Makefile!感谢逸学堂
大侠
的
分
享和作者的无私奉献!
本文深入探讨Makefile的概念及其在软件编译过程中的作用,阐述了如何通过Makefile实现自动化编译,提高软件开发效率。重点介绍了Makefile的基本规则、示例演示、依赖关系、链接过程、
shell
函数、控制make的函数等内容,旨在帮助开发者掌握Makefile的核心知识,提升编程技能。
shell
定制遇到的问题
本文详细记录了在Windows CE平台上定制
Shell
界面的过程,包括解决编译错误、设置编译路径、修改
Shell
显示内容等问题,以及如何调整桌面背景、快捷方式等。
系统维护与使用区
19,614
社区成员
74,562
社区内容
发帖
与我相关
我的任务
系统维护与使用区
系统使用、管理、维护问题。可以是Ubuntu, Fedora, Unix等等
复制链接
扫一扫
分享
社区描述
系统使用、管理、维护问题。可以是Ubuntu, Fedora, Unix等等
社区管理员
加入社区
获取链接或二维码
近7日
近30日
至今
加载中
查看更多榜单
社区公告
暂无公告
试试用AI创作助手写篇文章吧
+ 用AI写文章