如何仅重命名部分文件名?

时间:2015-07-06 19:38:34

标签: linux unix awk sed

我需要重命名数百个文件。目前它们看起来像这样:

localhost.programA.programA1.programA1stuff

我希望将其更改为

unixServer.programA.programA1.programA1stuff

如您所见,我只想将文件名的第一部分更改为新的主机名。我是unix / linux的新手,所以我不确定是否有一种简单的方法可以做到这一点。我想有一种疯狂的awk / sed one liner可以做到这一点,但我对这些工具中的任何一种都不熟悉,甚至不知道从哪里开始。

3 个答案:

答案 0 :(得分:3)

您可以使用“重命名”命令。

在你的情况下:

rename localhost unixServer ./localhost*

如果你愿意,你可以更具体。

http://man7.org/linux/man-pages/man1/rename.1.html

答案 1 :(得分:1)

好吧,重命名命令对我有用。

root@H61H2-MV:~/3# for i in {a..e} ; do touch localhost.program$i.program$i1.program$i1stuff ; done
root@:~/# ls
localhost.programa.program.program  localhost.programd.program.program
localhost.programb.program.program  localhost.programe.program.program
localhost.programc.program.program
root@technomics-H61H2-MV:~/# rename 's/localhost/unixServer/' localhost.*
root@H61H2-MV:~/# ls
unixServer.programa.program.program  unixServer.programd.program.program
unixServer.programb.program.program  unixServer.programe.program.program
unixServer.programc.program.program
root@H61H2-MV:~/# 

重命名我使用的命令语法,对于你的要求会像魅力一样工作..试一试..

答案 2 :(得分:1)

在Bash中:

$ find . -iname "localhost*"
./localhost.programA.programA1.programA1stuff

$ find . -iname "localhost*" | while read file; do mv $file ${file/localhost/unixserver}; done

$ find . -iname "unixserver*"
./unixserver.programA.programA1.programA1stuff