
我有一些文件寫為: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
我的電池快沒電了,所以我就長話短說
查找+awk oneliner
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