求一个删除文件名中的 ip 的命令

2019-03-16 15:18:51 +08:00
 css3
存在若干文件:
abc-192.168.1.1.txt
abcd-192.168.1.2.txt
想把其中的 ip 给删掉,
变成
abc.txt
adcd.txt

有什么方便的命令吗
2264 次点击
所在节点    程序员
18 条回复
akatquas
2019-03-16 15:22:57 +08:00
我也蹲一个答案(狗头
lzoje
2019-03-16 15:27:54 +08:00
可以试试直接重命名
geelaw
2019-03-16 15:28:56 +08:00
Get-ChildItem | Rename-Item -NewName { [regex]::Replace($_.Name, '^(.*?)-?[0-9.]+[0-9](\..*?)$', '$1$2') } -WhatIf

先这样看一遍确定是你想要的效果,然后去掉 -WhatIf
wsh1108
2019-03-16 15:45:47 +08:00
可以 rename,网上也有批量修改文件名的小工具
css3
2019-03-16 15:46:19 +08:00
@geelaw 不会用,有例子吗😭
css3
2019-03-16 15:46:31 +08:00
@wsh1108 要用脚本,不是一次性工作
gstqc
2019-03-16 15:53:36 +08:00
ls
for
sed
mv
done
wsh1108
2019-03-16 15:54:47 +08:00
@css3 自己写一个咯,一个 for 里面,正则匹配替换为空不就行了么
hanxiV2EX
2019-03-16 15:55:29 +08:00
ls -1|grep '-[0-9]\{1,3\}\.[0-9]\{1,3\}\.[0-9]\{1,3\}' | while read line;do
newname=$(echo $line | cut -c .....)
mv $line $newname
done

正则可能写的有问题,另外 cut 忘记如何把减号后面的字符串切掉了,手机上写的,自己查下 man 吧
radc
2019-03-16 15:57:24 +08:00
如果全是例子中格式,可以直接用横线切割。。然后保留第一部分,补一个扩展名.txt

for i in *-*.txt; do mv "$i" "$(echo $i | awk -F- '{print $1}').txt"; done
busfool
2019-03-16 16:00:17 +08:00
找到第一个-,找到最后一个.txt ,切割字符串
css3
2019-03-16 16:07:16 +08:00
@radc 这个命令最方便,但我发现适用不了两个-的,只要删掉靠近 ip 地址的这个-
zyp0921
2019-03-16 16:21:19 +08:00
for i in `ls` ;do echo $i;done
xabc
2019-03-16 16:38:35 +08:00
vim 宏录制开始
0f-ld0f.Dj
宏录制结束

播放宏
ETiV
2019-03-16 17:39:15 +08:00
for i in $(find *.txt); do
src=$i;
dst=$(echo $i | sed -E 's;\-[0-9]{1,3}.[0-9]{1,3}.[0-9]{1,3}.[0-9]{1,3};;g' );
echo mv $src $dst;
done

想执行就去掉倒数第二行的 echo
IP 的替换正则并不严格,999.999.999.999 的格式也会被清空
Hopetree
2019-03-16 18:16:46 +08:00
任何一个语言写几句代码就能做到吧,再不行,Excel 都可以做到
mingl0280
2019-03-17 01:16:28 +08:00
@hanxiV2EX
@css3
@radc

没那么复杂
ls | awk -F- '{print("mv "$0" "$1".txt")}' | /bin/bash
mingl0280
2019-03-17 01:22:47 +08:00
如果有多于一个横杠的情况,将$1 替换成$1$2...$n,从大到小替换就完了……

这是一个专为移动设备优化的页面(即为了让你能够在 Google 搜索结果里秒开这个页面),如果你希望参与 V2EX 社区的讨论,你可以继续到 V2EX 上打开本讨论主题的完整版本。

https://www.v2ex.com/t/545270

V2EX 是创意工作者们的社区,是一个分享自己正在做的有趣事物、交流想法,可以遇见新朋友甚至新机会的地方。

V2EX is a community of developers, designers and creative people.

© 2021 V2EX