【发布时间】:2011-08-31 18:29:55
【问题描述】:
谁能告诉我一个命令,它可以在不使用管道和重定向的情况下将目录下的所有文件重命名为 test.c 为 test.cc。
我编写了一个包含循环并执行相同工作的 shell 脚本:
for i in *.c;domv $i ${i%c}ccdone
【问题讨论】:
-
for i in *.c; do mv $i ${i%c}cc; done?
谁能告诉我一个命令,它可以在不使用管道和重定向的情况下将目录下的所有文件重命名为 test.c 为 test.cc。
我编写了一个包含循环并执行相同工作的 shell 脚本:
for i in *.c;domv $i ${i%c}ccdone
【问题讨论】:
for i in *.c; do mv $i ${i%c}cc; done ?
find dirname -iname "*.c" -exec mv "{}" "{}"c \;
【讨论】:
rename .cc .c *.cc 替代方案很简单(如果系统上有 rename)。
find x -iname "*.cc" -exec mv "{}" `basename "{}"`.c \; 但重命名解决方案好多更好。
rename,因为它适用于一般情况。
有什么问题:
for i in *.c; do mv $i ${i%c}cc; done
只有一行 - 甚至不是很长的一行...
另外,在 Linux 上,有一个 rename 命令:
rename .c .cc *.c
【讨论】:
mmv 应该可以解决问题。
【讨论】:
如果你有rename 命令:
rename .c .cc *.c
来自手册页:
rename 命令是 util-linux-ng 软件包的一部分,是 来自ftp://ftp.kernel.org/pub/linux/utils/util-linux-ng/
【讨论】: