批量文件名重命名
时间:2007-08-08 来源:djfreeman
将*.c文件更名为*.cpp文件
目录中的文件名如下:
freeman@freeman:~/data_structre$ ls
binstree buddy.h expreval hashtest.c listreverse makefile queue.c stack.h
binstree.c buddytest expreval.c list listreverse.c object.c queue.h stack.o
binstree.h buddytest.c hash.c list.c looplist object.h test
buddy.c divide.c hash.h list.h looplist.c objtest.c stack.c test.c
运行如下shell命令:
freeman@freeman:~/data_structre$ ls *.c |awk '{oldname=$1;sub(/c$/,"cpp");print oldname,$1 }'|xargs -n2 mv
则进行了文件名的更换。
运行后的结果如下:
freeman@freeman:~/data_structre$ ls
binstree buddy.h expreval hashtest.cpp listreverse makefile queue.cpp stack.h test.cpp
binstree.cpp buddytest expreval.cpp list listreverse.cpp object.cpp queue.h stack.o
binstree.h buddytest.cpp hash.cpp list.cpp looplist object.h semantic.cache test
buddy.cpp divide.cpp hash.h list.h looplist.cpp objtest.cpp stack.cpp
注:这里传给xargs的参数-n2是关键,它指示xargs每次从标准输入中取出两个Field,传递给待执行的命令作为参数。否则它会一直从标准输入中取,一直取到命令行刚好不超过LINE_MAX为止。
目录中的文件名如下:
freeman@freeman:~/data_structre$ ls
binstree buddy.h expreval hashtest.c listreverse makefile queue.c stack.h
binstree.c buddytest expreval.c list listreverse.c object.c queue.h stack.o
binstree.h buddytest.c hash.c list.c looplist object.h test
buddy.c divide.c hash.h list.h looplist.c objtest.c stack.c test.c
运行如下shell命令:
freeman@freeman:~/data_structre$ ls *.c |awk '{oldname=$1;sub(/c$/,"cpp");print oldname,$1 }'|xargs -n2 mv
则进行了文件名的更换。
运行后的结果如下:
freeman@freeman:~/data_structre$ ls
binstree buddy.h expreval hashtest.cpp listreverse makefile queue.cpp stack.h test.cpp
binstree.cpp buddytest expreval.cpp list listreverse.cpp object.cpp queue.h stack.o
binstree.h buddytest.cpp hash.cpp list.cpp looplist object.h semantic.cache test
buddy.cpp divide.cpp hash.h list.h looplist.cpp objtest.cpp stack.cpp
注:这里传给xargs的参数-n2是关键,它指示xargs每次从标准输入中取出两个Field,传递给待执行的命令作为参数。否则它会一直从标准输入中取,一直取到命令行刚好不超过LINE_MAX为止。
相关阅读 更多 +