Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/unix/3.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Linux 如何仅批量重命名部分文件名?_Linux_Unix_Awk_Sed - Fatal编程技术网

Linux 如何仅批量重命名部分文件名?

Linux 如何仅批量重命名部分文件名?,linux,unix,awk,sed,Linux,Unix,Awk,Sed,我有数百个文件需要重命名。目前它们看起来像这样: localhost.programA.programA1.programA1stuff 我想把它改成 unixServer.programA.programA1.programA1stuff 如您所见,我只想将文件名的第一部分更改为新的主机名。我是unix/linux新手,所以我不确定是否有一种简单的方法不是手工操作的。我想象有某种疯狂的awk/sed one liner可以做到这一点,但我对其中任何一种工具都不太熟悉,甚至不知道从哪里开始

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

localhost.programA.programA1.programA1stuff
我想把它改成

unixServer.programA.programA1.programA1stuff

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

您可以使用重命名命令

就你而言:

rename localhost unixServer ./localhost*
如果你愿意,你可以说得更具体一些


可以使用重命名命令

就你而言:

rename localhost unixServer ./localhost*
如果你愿意,你可以说得更具体一些


嗯,重命名命令对我很有效

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:~/# 

重命名命令语法,就像我使用的一样,可以满足您的需求。。试试看

嗯,重命名命令对我很有效

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:~/# 
重命名命令语法,就像我使用的一样,可以满足您的需求。。试试看

在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
在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

哦,那是相当平淡无奇的。谢谢。哦,那是相当平淡无奇的。非常感谢。