我有一些文件写为:test_026542_time0663550.5.jpeg
并且我想重命名以便test_0663550.jpeg
于按订单号轻松分类,因为当前名称有一些错误。
答案1
使用rename
函数。它的基本(原型形式)是$ rename s/"SEARCH"/"REPLACE"/g *
。这会将文件“SEARCH”替换为“REPLACE”。/g
表示全局,因此如果您有一个“SEARCH SEARCH.jpg”,它将被重命名为“REPLACE REPLACE.jpg”。*
是扩展名类型,如.mp3
或.pdf
。因此,您的示例将是:
$ rename s/'test_026542_time0663550.5.jpeg'/'test_0663550_.jpeg'/g *
这应该有帮助。
答案2
我的电池快没电了,所以我就简短地说一下
Find+awk 单行
find . -type f -printf "%f\n" | awk -F "_"
'{ORIG=$0;gsub(/\_[[:digit:]].*\_time/,"_");gsub(/\.[[:digit:]].*\.jpeg/,".jpeg"); NEW=$0;cmd="mv "ORIG"
"NEW;system(cmd)}'
演示
testdir2:$ ls
test_13442_time1446925878.1.jpeg test_27796_time1446925887.4.jpeg
test_25495_time1446925884.3.jpeg test_29681_time1446925881.2.jpeg
testdir2:find . -type f -printf "%f\n" | awk -F "_"
'{ORIG=$0;gsub(/\_[[:digit:]].*\_time/,"_");gsub(/\.[[:digit:]].*\.jpeg/,".jpeg"); NEW=$0;cmd="mv "ORIG"
"NEW;system(cmd)}'
testdir2:$ ls
test_1446925878.jpeg test_1446925881.jpeg test_1446925884.jpeg test_1446925887.jpeg