Rename

基於模式重命名目錄

  • February 11, 2017

如果目錄與要查找的模式的模式匹配,我想重命名同一目錄中的所有目錄user1 [files.sentfrom.com] - 範例:目錄名稱為:

user1 [files.sentfrom.com] - Directory-Subject

這是目錄的前圖像。 圖像前

我想將目錄名稱重命名為:

Directory-Subject (this could have different type of text)

這是帶有重命名目錄的後圖像,請注意它不會重命名目錄中的任何其他文件夾或文件。 這是重命名後的圖像,請注意它不會重命名目錄中的任何其他內容

這可以一次在正則表達式中完成,還是我需要一個 for 循環,我也對另一種方式持開放態度。

謝謝

for name in *\[*\]\ -\ *; do
 if [[ -d "$name" ]] && [[ ! -e "${name#* - }" ]]; then
   mv "$name" "${name#* - }"
 fi
done

上面的循環可以在bashksh93至少在目前目錄中與文件名通配模式匹配的所有名稱*\[*\]\ -\ *(括號和空格需要從外殼中轉義)並測試以確保它是一個目錄並且已修改名稱尚不存在。如果一切正常,那麼它會重命名目錄。

參數擴展${name#* - }將獲取變數的值name並刪除從變數開始到第一次出現␣-␣(space-dash-space) 的所有內容。

引用自:https://unix.stackexchange.com/questions/344240