我有名为test_images的文件夹中的文件列表,如下所示
006103insettedryshampoo-blossom7096.jpg
008299bathmassagesponges-3packa1a4.jpg
008507colgatetripleactiontoothpaste125d.jpg
8729teatreeoilantisepticcream25g1005.jpg
我想通过从每个文件中删除最后四个字符来重命名所有文件
006103insettedryshampoo-blossom.jpg
008299bathmassagesponges-3pack.jpg
008507colgatetripleactiontoothpaste.jpg
8729teatreeoilantisepticcream25g.jpg
我怎样才能使用sed?
任何建议都将受到赞赏。
提前致谢:)
答案 0 :(得分:2)
如果您的文件名没有空格,您可以:(在test_images
目录下)
ls -1|sed -r 's/(.*)....(\.jpg)$/mv & \1\2/'
检查生成的mv
命令。如果没问题,请将|sh
添加到上面的命令中以进行实际重命名。
如果您的文件名包含空格,则需要添加引号:
..../mv "&" "\1\2"/'|sh
这是一个快速而肮脏的解决方案,因为使用ls结果并不是一个好习惯。
LsyHP 11:41:40 /tmp/test/img
kent$ ll
total 0
drwxr-xr-x 2 kent kent 120 Jan 4 11:41 ./
drwxr-xr-x 3 kent kent 160 Jan 4 11:41 ../
-rw-r--r-- 1 kent kent 0 Jan 4 11:41 006103insettedryshampoo-blossom7096.jpg
-rw-r--r-- 1 kent kent 0 Jan 4 11:41 008299bathmassagesponges-3packa1a4.jpg
-rw-r--r-- 1 kent kent 0 Jan 4 11:41 008507colgatetripleactiontoothpaste125d.jpg
-rw-r--r-- 1 kent kent 0 Jan 4 11:41 8729teatreeoilantisepticcream25g1005.jpg
LsyHP 11:41:43 /tmp/test/img
kent$ ls -1|sed -r 's/(.*)....(\.jpg)$/mv & \1\2/'
mv 006103insettedryshampoo-blossom7096.jpg 006103insettedryshampoo-blossom.jpg
mv 008299bathmassagesponges-3packa1a4.jpg 008299bathmassagesponges-3pack.jpg
mv 008507colgatetripleactiontoothpaste125d.jpg 008507colgatetripleactiontoothpaste.jpg
mv 8729teatreeoilantisepticcream25g1005.jpg 8729teatreeoilantisepticcream25g.jpg
LsyHP 11:41:52 /tmp/test/img
kent$ ls -1|sed -r 's/(.*)....(\.jpg)$/mv & \1\2/'|sh
LsyHP 11:41:57 /tmp/test/img
kent$ ll
total 0
drwxr-xr-x 2 kent kent 120 Jan 4 11:41 ./
drwxr-xr-x 3 kent kent 160 Jan 4 11:41 ../
-rw-r--r-- 1 kent kent 0 Jan 4 11:41 006103insettedryshampoo-blossom.jpg
-rw-r--r-- 1 kent kent 0 Jan 4 11:41 008299bathmassagesponges-3pack.jpg
-rw-r--r-- 1 kent kent 0 Jan 4 11:41 008507colgatetripleactiontoothpaste.jpg
-rw-r--r-- 1 kent kent 0 Jan 4 11:41 8729teatreeoilantisepticcream25g.jpg
答案 1 :(得分:0)
另一种方法,假设您的所有文件都是.jpg
,您只需删除最后一个8并替换为.jpg
echo "006103insettedryshampoo-blossom7096.jpg" |sed -r 's/.{8}$/.jpg/'
答案 2 :(得分:0)
尝试这种方法
rename 's/....\.jpg$/.jpg/' 006103insettedryshampoo-blossom7096.jpg
<强>输出:强>
006103insettedryshampoo-blossom.jpg