Rename
基於模式重命名目錄
如果目錄與要查找的模式的模式匹配,我想重命名同一目錄中的所有目錄
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
上面的循環可以在
bash
或ksh93
至少在目前目錄中與文件名通配模式匹配的所有名稱*\[*\]\ -\ *
(括號和空格需要從外殼中轉義)並測試以確保它是一個目錄並且已修改名稱尚不存在。如果一切正常,那麼它會重命名目錄。參數擴展
${name#* - }
將獲取變數的值name
並刪除從變數開始到第一次出現␣-␣
(space-dash-space) 的所有內容。