将目录从 abc.folder.xyz 重命名为folder.xyz
假设我有一个目录,其中包含一堆站点名称。
即
dev.domain.com
dev.domain2.com
dev.domain3.com
如何使用管道和/或重定向 bash 在 linux cli 上将它们重命名为
?
我到达了一个点,而不是陷入困境。
find . -maxdepth 1 | grep -v "all" | cut --delimiter="." -f3 | awk '{ print $0 }'
给了我域部分,但我无法超越它。也不确定 awk 是否是答案。任何建议表示赞赏。
Say I have a directory with a bunch of site names in it.
i.e.
dev.domain.com
dev.domain2.com
dev.domain3.com
How can I rename those to <domain>.com
on the linux cli using piping and/or redirection bash?
I get to a point than am stuck.
find . -maxdepth 1 | grep -v "all" | cut --delimiter="." -f3 | awk '{ print $0 }'
Gives me the domain part, but I can't get past that. Not sure awk is the answer either. Any advice is appreciated.
如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。
绑定邮箱获取回复消息
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
发布评论
评论(4)
要从名称中删除前导
'dev.'
,应如下所示:To strip the leading
'dev.'
from names it should be like this:解释:
对每个文件执行此操作
需要三组“除 之外的每个字符”。并改变他们的顺序
\2.\1 表示:打印第二组,一个点,第一组
$( ... ) 获取 sed 的输出并将其“粘贴”在 mv $i 之后称为“命令替换” http://www.gnu.org/software/bash/manual/bashref.html#Command-Substitution
Explained:
do it for every file
takes three groups of "every character except ." and changes their order
\2.\1 means: print second group, a dot, first group
the $( ... ) takes output of sed and "pastes" it after mv $i and is called "command substitution" http://www.gnu.org/software/bash/manual/bashref.html#Command-Substitution
尝试使用重命名命令。它可以采用如下正则表达式:
Try the rename command. It can take a regular expression like this:
在您要使用的目录下,尝试:
将打印 mv 命令。如果您想重命名,请添加
"|sh"
和末尾:under the directory you want to work with, try :
will print mv command. if you want to do the rename, add
"|sh"
and the end: