簡體   English   中英

用bash更改文件擴展名的問題

[英]issue with changing file extensions with bash

find /path/to/files -type f -not -name "M*'.jpg" -exec mv "{}" "{}".mxg \;

我擔心我犯了兩個錯誤。

文件存儲在目錄結構中。 目標是保留文件名並將文件擴展名從.jpg更改為.mxg。 但僅適用於以“ M”作為文件名首字符的文件。

上一行具有以下結果:

  • 所有文件都添加了.mxg。 因此,.jpg不是,所有文件都已更改。

應該這樣做:

find /path/to/files -type f -name 'M*.jpg' -exec bash -c 'echo mv "$1" "${1/jpg/mxg}"' -- {} \;

一個更干凈的解決方案是,如果您具有rename命令。 但是,那里有不同的實現,因此請先閱讀man頁,以檢查您與我的man是否相同。 我在Debian中使用的版本是Larry Wall在perl的實現。 您可以通過示例在頂部附近rename 's/\\.bak$//' *.bak或在底部附近rename 's/\\.bak$//' *.bak AUTHOR部分來識別這一點。 通過此實現,您可以像這樣重命名文件:

find /path/to/files -type f -name 'M*.jpg' -exec rename 's/jpg$/mxg/' {} \;

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM