簡體   English   中英

bash filename globbing - 對以capital開頭的文件進行操作

[英]bash filename globbing - operate on files starting with capital

假設我有一個包含以下jpeg文件的文件夾:

adfjhu.jpg  Afgjo.jpg  
Bdfji.jpg   bkdfjhru.jpg
Cdfgj.jpg   cfgir.jpg
Ddfgjr.jpg  dfgjrr.jpg

如何刪除或列出以大寫字母開頭的文件?

這可以通過findgrepxargs的組合來解決。

但是在bash中可以使用普通的文件循環/模式匹配嗎?

由於(據我所知)LANG設置為en_US和整理順序,下面的cmd不起作用。

$ ls [A-Z]*.jpg
Afgjo.jpg  Bdfji.jpg  bkdfjhru.jpg  Cdfgj.jpg  cfgir.jpg  Ddfgjr.jpg  dfgjrr.jpg

這種作品

$ ls +(A|B|C|D)*.jpg
Afgjo.jpg  Bdfji.jpg  Cdfgj.jpg  Ddfgjr.jpg

但我不想為所有字符AZ做這個通用解決方案!

這可能嗎?

歡呼// Fredrik

您應該將您的語言環境設置為C (或POSIX )語言環境。

$ LC_ALL=C ls [A-Z]*.jpg

要么

$ LC_ALL=C ls [[:upper:]]*.jpg

在此處閱讀更多信息: http//www.opengroup.org/onlinepubs/007908799/xbd/locale.html

使用帶有字符類的括號表達式:

ls -l [[:upper:]]*

有關字符類和其他信息的列表,請參閱man 7 regex

從該頁面:

在括號表達式中,'[:'和':]'中包含的字符類的名稱代表屬於該類的所有字符的列表。 標准字符類名稱是:

 alnum digit punct alpha graph space blank lower upper cntrl print xdigit 

使用grep

ls | grep -e ^[A-Z]

如果你想更多地使用for循環:

for i in $(ls | grep -e ^[A-Z]); do echo $i ;done 

暫無
暫無

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

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