2011-03-22 143 views
54

我有一組文件,所有這些文件nnn.MP4.mov我怎麼能重命名它們,以便它只是nnn.mov我如何批量使用終端重命名文件?

+1

安裝muCommander。它有Total Commander風格批量重命名器。爲什麼要浪費時間在那100個字符的吹噓批量命令? – Nakilon 2013-08-17 22:34:28

+0

@Nakilon因爲學習的命令行對投資 – 2017-04-25 13:14:50

回答

81

首先,做一個預演(實際上不會重命名任何文件)具有以下:

for file in *.mov 
do 
    echo mv "$file" "${file/MP4./}" 
done 

如果一切正常,請從第三行刪除echo以實際重命名文件。

+18

無法弄清楚爲什麼這不起作用......有輸出,它看起來像是,但它實際上並沒有做任何事情。那麼我終於明白,你需要刪除ECHO語句才能真正實現它(在OSX 10.7上)。所以,如果你保留echo語句,那麼你可以測試它,看看重命名是否會像你想要的那樣工作,然後刪除echo以使其工作。所以相當於從Windows的ren * -hd.png * .png是:對於* .png中的文件 做 mv「$ file」「$ {file/-hd /}」 done – jsherk 2012-07-12 01:10:07

+2

運行您需要的腳本: 1.將其保存在'rename.sh'文件中; 2.使其可執行'chmod 755 rename.sh'; 3.從當前文件夾中啓動它,在該文件夾中有要重命名的文件和shell腳本'。/ rename.sh'; 4.如果結果很好,請從腳本中移除'echo'並重新啓動它。 我需要將擴展​​名添加到文件組。所以我在腳本中的動作是這樣的:'mv「$ file」「$ {file} .jpeg」' – 2016-09-10 08:17:12

0
ls -1 *.MP4.mov | while read f; do mv -i "$f" "$(basename \"$f\" .MP4.mov)"; done 

編輯:完全重寫。

+0

它不斷要求輸入...更大的回報 – 2011-03-22 16:04:47

+0

'> > > > > > >' – 2011-03-22 16:05:12

+0

如果你想要做什麼,刪除 - 我 – 2011-03-22 16:05:19

0
for i in *; 
do j=`echo $i | cut -d . -f 1`; 
j=$j".mov"; 
mv $i $j; 
done 

這將削減一切的第一個點之前並追加.MOV

但如果某些文件如hi.2.mov和hi.1.mov會被改寫,所以用它小心^^

33

我剛剛成功地使用了Automator(第一次打擾),它的工作非常好。我將自動化保存爲服務。花了大約10秒鐘才能使某些東西容易重複使用:

  1. 打開Automator。
  2. 作爲文件類型,選擇「服務」。
  3. 更改服務將選定的「文本」接收到「文件和文件夾」。
  4. 考慮將「任何應用程序」更改爲Finder。
  5. 從邊欄中選擇「文件&文件夾」(位於Library下),然後從列出的操作中,在中間列將「重命名Finder項目」拖到右側並將其放在「拖動操作或文件到此處以構建你的工作流程。「
  6. 將剛剛添加的操作從「添加日期或時間」添加到「順序」。
  7. 單擊操作底部的「選項」,然後選中「在工作流程運行時顯示此操作」選項。
  8. 點擊「CMD + S」將服務保存爲「替換文字」。
  9. 完成!

現在您可以在Finder中右鍵點擊任何選項,進入服務菜單並選擇「替換文本」,填寫您希望如何更改或替換文本,然後單擊「繼續」應用配置的更改。

+0

謝謝!上述方法由於某種原因不起作用。 – Norris 2012-04-09 23:33:51

+0

什麼或哪裏或什麼時候失敗?根本沒有錯誤信息? – Johan 2012-05-29 09:33:12

+0

我低估了它,因爲問題有「終端」標籤。 – v42 2013-12-13 17:11:42

10

要測試打印操作:

for file in *.MP4.mov; do j=`echo $file | cut -d . -f 1`;j=$j".mov";echo mv \"$file\" \"$j\"; done 

,使其工作:

for file in *.MP4.mov; do j=`echo $file | cut -d . -f 1`;j=$j".mov";mv "$file" "$j"; done 
+1

測試打印選項贏得了我的投票。謝謝! – 2014-05-04 05:32:36

+0

耶這工作!謝謝。 – 2014-12-19 14:04:46

+0

感謝您的單線解決方案 – semihcosu 2017-09-12 08:38:54

1
for i in `ls *png`;do echo mv $i "${i%%.*}"@xx."${i##*.}";done 
11
for n in *.MP4.mov 
do 
    mv $n $(echo $n | sed -e 's/.MP4//') 
done 

這將工作,即使在沒有參數替換真的老了殼,至少我的眼睛更可讀。

+0

我已經將它應用到名稱中使用'_MG_'的文件,我需要通過在中間用'*'和'*'進行修改來完美更改爲'-IMG_'。鍛鍊了魅力。謝謝! – 2014-10-01 01:53:11

4

在Mac OSX上,你可以通過自制安裝rename命令:brew install rename

然後可以重命名使用查找/從該文件夾替換命令行:

rename 's/\.MP4\././' * 

你還可以看到更多的選擇使用man rename

1

vimv允許您使用Vim的文本編輯功能重命名多個文件。

進入vimv打開一個列出所有文件的Vim窗口,您可以進行模式匹配,視覺選擇等來編輯名稱。在你退出Vim後,這些文件將被重命名。

[聲明:我是該工具的作者]