簡體   English   中英

使用正則表達式查找和重命名文件/文件夾

[英]Find and rename files/folders using regex

我試圖為以I0 [0-9] [0-9]-開頭的文件名找到正確的正則表達式,例如:“ I097-”。 我不熟悉正則表達式,但是在網上使用時,我想到了這個[I] [0] [\\ d] [\\ d] [-],我確定這不是我擁有的字符串的最佳正則表達式模式,但是我使用在線正則表達式工具進行了測試,並且可以正常工作。 現在,我想使用Linux'find'查找所有與此正則表達式匹配的文件,並通過將匹配字符串替換為空來重命名結果文件。

From:
I071-PTEN-7
./I071-PTEN-7/I071-PTEN-7.txt

To:
PTEN-7
./PTEN-7/PTEN-7.txt

command used:
find . -name "I0*" -type f -o -name "I0*" -type d -exec rename -n "s/[I][0][\d][\d][-]/''/" {} \;

但是它似乎無能為力,不確定發生了什么。 任何發現問題或解決方案的幫助將不勝感激。 謝謝。

使用-execdir選項可僅find文件名條目,也無需在正則表達式中的每個字符周圍使用字符類。

find . -name 'I0*' -execdir rename -n 's/^I0\d\d-//' {} \;

如果rename不起作用,則可以嘗試以下操作:

find . -type f -name 'I0*' -execdir bash -c 'mv "$1" "${1/I0[0-9][0-9]-/}"' - {} \; &&
find . -name 'I0*' -execdir bash -c 'mv "$1" "${1/I0[0-9][0-9]-/}"' - {} \;

暫無
暫無

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

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