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
哦,那是相当平淡无奇的。谢谢。哦,那是相当平淡无奇的。非常感谢。