2016-05-04 21 views
1

我試圖將一個複雜的正則表達式作爲忽略模式傳遞。我想忽略locales/的所有子文件夾,但locales/US/en/*除外。我可能需要使用.agignore文件,但我試圖避免這種情況。展開命令行使用zsh排除模式

我使用銀色搜索器(類似於Ack,Grep)。我在終端中使用zsh。

這個作品真的很好,忽略所有的語言環境的子文件夾除了locales/US

ag -g "" --ignore locales/^US/ | fzf 

我也想忽略所有locales/US/*除了locales/US/en 想我要的就是這一點,但它不工作。

ag -g "" --ignore locales/^US/^en | fzf 

想法?

回答

1

添加多個--ignore命令。例如:

ag -g "" --ignore locales/^US/ --ignore locales/US/^en 
+0

哇。工作就像一個魅力 –

0

下能否正常工作以及:

find locales/* -maxdepth 0 -name 'US' -prune -o -exec rm -rf '{}' ';' 

Man Pages Documentation

-prune 真;如果文件是一個目錄,請不要下載到它。如果給出了-depth,則爲false;沒有效果。因爲-delete意味着-depth,所以你不能有用地使用-prune和-delete。

-prune,您可以過濾掉你的結果(better description here

-exec命令; 執行命令;如果返回0狀態,則返回true。以下所有找到的參數都被認爲是該命令的參數,直到由';'組成的參數遇到。字符串'{}'被替換爲當前文件名,在它發生在命令的參數中的任何地方都會被處理,而不僅僅是單獨存在的參數,就像在某些版本的find中一樣。這兩個構造可能都需要被轉義(用'\')或引號來保護它們免受shell的擴展。有關使用-exec選項的示例,請參閱EXAMPLES部分。指定的命令對每個匹配的文件運行一次。該命令在起始目錄中執行。圍繞使用-exec動作存在不可避免的安全問題;您應該使用-execdir選項。

-exec讓你執行任何結果的命令find返回。

+0

我誤解了這個問題,它不會刪除'US/EN'。 – TheIronDeveloper