簡體   English   中英

使用Regex查找某些文件類型

[英]Using Regex to find certain file types

嘗試將jpgpngJPG文件從IMG_0000開始從一個目錄復制到另一個目錄時IMG_0000 我找到了正確的表達,但我正在努力使其成功。

到目前為止,我已經放置了正確的正則表達式以及我的代碼。 我從中復制的目錄是/root/memory ,目標目錄是/root/photoarch 請注意,內部/root/memory有多個子目錄和多種不同的文件類型。

正則表達式:

IMG_[0-9]{4}.[jpg,png,JPG]{3}

碼:

#!bin/bash
mkdir photoarch
find "/root/memory" -regex '.*IMG_[0-9]{4}.[jpg,png,JPG]{3}' -exec cp {} "/root/photoarch"\;

如果您嘗試復制名為IMG_<4-digits>.<jpg|JPG|png> ,那么您的正則表達式及其類型(默認情況下find使用Emacs RE,而不是POSIX ERE )是錯誤的。

關於正則表達式,您將不得不使用替換而不是字符范圍。 例如jpg|png將匹配jpgpng 相比之下, [jpg,png]{3}將匹配的任何3個字符的序列jpg,n ,像jjjj,p ,和pnj 此外,您必須轉義點(使用\\. ),否則它將匹配任何字符。

要使用POSIX ERE,請將-regextype設置為posix-extended (要列出所有接受的類型,請運行find -regextype help )。

對於不區分大小寫的匹配,您可以使用-iregex

find /root/memory -regextype posix-extended -iregex '.*img_[0-9]{4}\.(jpg|png)' -exec cp {} /root/photoarch \;

(圍繞jpg|png的括號是必要的,因為連接的優先級高於交替。)

暫無
暫無

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

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