這個問題在其他問題中有點獨特。
我有一堆文件夾的dir,他們用週期來分隔每個單詞。
如:foo.bar.2011.useless.words
最後兩個字永遠是無用的,所以我想截尾從第二個到最後一個期間開始。
不確定的措辭...
千恩萬謝bash腳本批量截取文件名在一個目錄中
0
A
回答
1
for file in *.*.*
do
mv "$file" "${file%.*.*}"
done
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
相關問題
- 1. 批處理腳本從目錄中獲取第一個文件名
- 2. 在bash中截斷一個目錄
- 3. 在Bash中批量重命名文件
- 4. 在批處理腳本中找到一個目錄名
- 5. 記錄一個bash腳本文件
- 6. 批處理腳本刪除文件名或目錄中的最後一個詞
- 7. 在批處理腳本中獲取文件父目錄的全名
- 8. 目錄(備份)文件的Bash腳本
- 9. 如何在bash腳本中讀取目錄名
- 10. 在bash腳本中讀取和製表目錄名稱
- 11. 使用BASH /腳本語言批量處理JSON文件的目錄/?
- 12. Bash腳本重命名子目錄中的文件 - 基於文件名
- 13. bash腳本從一個目錄中獲取文件並將它們與另一個目錄進行比較
- 14. bash腳本 - 在一個目錄中最新版本的文件複製遞歸
- 15. 在某個目錄中遞歸地重命名某些文件 - Shell/Bash腳本
- 16. 獲取bash腳本文件所在的目錄
- 17. 在bash腳本中獲取grandparent目錄 - 在其路徑中重命名文件的目錄
- 18. 批量使文件名中包含子目錄的目錄
- 19. 批處理腳本執行文件,一個變量名
- 20. Bash腳本:重命名輸出目錄
- 21. 腳本預先在一個目錄內的所有文件名
- 22. bash腳本從文件名
- 23. bash腳本重命名文件的目錄
- 24. bash腳本 - 重命名目錄包含*空間*()*所有文件 -
- 25. Bash腳本 - 在一個存檔中壓縮多個目錄
- 26. 使用單個bash腳本在diff目錄中執行多個bash腳本
- 27. Bash腳本迭代目錄中的文件和模式匹配文件名
- 28. 在批處理腳本中將文件夾從一個目錄移動到另一個目錄
- 29. Bash獲得另一個bash腳本調用後的文件當前目錄
- 30. bash腳本讀取文件中的變量到本地變量
一個次要批評:你會希望在*。*。* /`中使用`for file來限制只匹配目錄的模式。現在你可以匹配`this.is.a.file` – SiegeX 2011-01-22 22:36:31