我有一些文件:
/var/www/media/0001/0001_123456_12.jpg
/var/www/media/0002/0002_123456_12.jpg
/var/www/media/0003/0003_123456_12.jpg
我想将它们重命名为:
/var/www/media/0001/0001_test.jpg
/var/www/media/0002/0002_test.jpg
/var/www/media/0003/0003_test.jpg
我的想法是找到第一个_
,删除文件的其余部分,直到.
然后添加test
。
有什么想法吗?
答案 0 :(得分:1)
这是一个允许你使用正则表达式的solution in perl。
答案 1 :(得分:1)
find /var/www/media/ -name \*.jpg -exec sh -c '
a=$(echo {} | sed s/_123456_/_/);
[ "$a" != "{}" ] && mv "{}" "$a" '
您可以在/var/www/media
中找到所有jpg文件,并为每个文件运行命令:
a=$(echo {} | sed s/_123456_/_/)
[ "$a" != "{}" ] && mv "{}" "$a"
在此命令之后,a
变量重写了文件内的名称:
a=$(echo {} | sed s/_123456_/_/)
我们比较a
变量和真实姓名({}
),它们不相等
必须重命名该文件。
答案 2 :(得分:1)
如果您可以安装mmv
软件包,那么这些操作就变得简单了。使用mmv
,您可以执行以下操作:
cd /var/www/media
mmv '*/*_123456_*.jpg' '#1/#2_test.jpg'
以下是mmv联机帮助页:http://manpages.ubuntu.com/manpages/lucid/man1/mln.1.html