社区
系统维护与使用区
帖子详情
哪位大侠给个将一个目录下的所有文件名都由大写改成小写的shell或者c程序,121分呀!
cloudred
2001-03-13 07:30:00
加精
如题!
...全文
384
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语句后的“分号”,我凭感觉觉得好象放的不是位置,请明示
shell
脚本2
Shell
脚本2 测试和判断 1、测试
程序
运行中经常需要根据实际情况来运行特定的命令或代码块。比如,判断某个文件或
目录
是否存在,如果不存在,则需要创建。例如: [root@
shell
~]# ls /var/log/messages /var/log/messages [root@
shell
~]# echo $? 0 [root@
shell
~]# ls /var/log/messages004 ls: 无法访问/var/log/messages004: 没有那个文件或
目录
第十章 认识与学习bash
文章
目录
认识bash这个
shell
shell
变量的功能 认识bash这个
shell
硬件,内核与
shell
shell
是将命令转化成机器语言,由cpu执行。cpu执行结果又经过
shell
转换成我们能看懂的结果。
shell
看不到,摸不着,必须找
一个
软件连接到
shell
。linux终端(GUI)不是
shell
,它连接了人和
shell
。打开
一个
终端,终端会连接到
shell
(打开
一个
shell
进程)。 系统中有那些
shell
呢? cat /etc/
shell
s #查看系统中有那些
shell
结果 :
我在CSDN参与的3000个帖子
今日偶然翻到,感慨万千 1:申述:版主,是否扣了我的专家
分
? 2:100
分
急求,随机输出十个
小写
字母,但是,要求这十个字母不相同 3:求Sn=a+aa+aaa+…+aaa…a(n个a)之值 4:数组题 望高手帮忙! 5:呵呵,来推荐一下我的网站,本站提供大量当今流行的免费的音乐和免费电影,常用软件、游戏、精美图库下载,希望对网友有帮助!顺便散
分
! 6:VBA请教怎
终于读完了《跟我一起写 Makefile》 !也算了解了一下Makefile!感谢逸学堂
大侠
的
分
享和作者的无私奉献!
陈皓概述——什么是makefile?或许很多Winodws的
程序
员都不知道这个东西,因为那些Windows的IDE都为你做了这个工作,但我觉得要作
一个
好的和 professional的
程序
员,makefile还是要懂。这就好像现在有这么多的HTML的编辑器,但如果你想成为
一个
专业人士,你还是要了解 HTML的标识的含义。特别在Unix下的软件编译,你就不能不自己写makefile了,会不会
Windows批处理命令学习
Windows批处理命令学习一 Windows的批处理命令固然比不上unix的
shell
脚本强大,但用好了仍能给我们的工作带来很大作用。
一个
朋友问我为什么学习批处理命令,我以《
程序
员修炼之道——从小工到专家》一书的一句话答复他:图形界面的优点是所见即所得,图形界面的缺点是所见就是所有所得,而批处理命令组合起来功能强大快捷。现在就让我们来学习下吧。(下面红色字为批处理命令) 基本的命令: ...
系统维护与使用区
19,612
社区成员
74,603
社区内容
发帖
与我相关
我的任务
系统维护与使用区
系统使用、管理、维护问题。可以是Ubuntu, Fedora, Unix等等
复制链接
扫一扫
分享
社区描述
系统使用、管理、维护问题。可以是Ubuntu, Fedora, Unix等等
社区管理员
加入社区
获取链接或二维码
近7日
近30日
至今
加载中
查看更多榜单
社区公告
暂无公告
试试用AI创作助手写篇文章吧
+ 用AI写文章