2011-01-22 72 views
0

這個問題在其他問題中有點獨特。
我有一堆文件夾的dir,他們用週期來分隔每個單詞。
如:foo.bar.2011.useless.words
最後兩個字永遠是無用的,所以我想截尾從第二個到最後一個期間開始。
不確定的措辭...
千恩萬謝bash腳本批量截取文件名在一個目錄中

回答

1
for file in *.*.* 
do 
    mv "$file" "${file%.*.*}" 
done 
+0

一個次要批評:你會希望在*。*。* /`中使用`for file來限制只匹配目錄的模式。現在你可以匹配`this.is.a.file` – SiegeX 2011-01-22 22:36:31

0

如果用點你的文件夾只有一級,去伊格納西奧的答案。但是,如果您想要重命名文件夾中存在的子目錄(如/toplevel/subdir1/foo.bar.baz.blah/),則需要使用以下我的find命令。除非您有Bash 4.x,在這種情況下,您可以使用shopt -s globstar選項。

find /top/level/dir -type d -name '*.*.*' -exec sh -c 'for arg; do echo mv "$arg" "${arg%.*.*}"; done' _ {} + 

我在裏面添加了一個echo所以你可以做幹運行而不進行任何更改。如果您對輸出滿意並再次運行以使更改永久化,請刪除echo

編輯 被無恥地竊取伊格納西奧的PE

+0

感謝您的幫助,有價值的工具無疑打消了我的$tmp變種,可能回答上述問題的評論,如果你喜歡它的感覺... – fightermagethief 2011-01-22 22:45:07

相關問題