我有一棵樹,看起來像這樣:Shell:獲取除一個子目錄外的所有子目錄中的文件的通配符?
src/
├── engine/
├── python/
└── scenes/
我知道,我可以使用ls src/**/*
要得到所有src
的子目錄中的文件列表,但我不希望輸出的任何文件src/engine/
目錄。有沒有一種簡潔的方式,我可以從通配符中排除engine/
?
在此先感謝。
我有一棵樹,看起來像這樣:Shell:獲取除一個子目錄外的所有子目錄中的文件的通配符?
src/
├── engine/
├── python/
└── scenes/
我知道,我可以使用ls src/**/*
要得到所有src
的子目錄中的文件列表,但我不希望輸出的任何文件src/engine/
目錄。有沒有一種簡潔的方式,我可以從通配符中排除engine/
?
在此先感謝。
我假設你正在使用Python,因爲問題包含對目錄Python
的引用。如果你不是,那麼請忽略這個答案。
您可以使用Formic與Python 2.6
在命令行中,formic
可以像這樣使用,以實現自己的目標(假設您目前在/path/to/src
:
formic -e "/engine/**"
的-e
選項排除一個(或更多)Globs。在這種情況下,/engine/**
直接排除當前工作目錄下engine
目錄下的所有內容。
在Python:
import formic
fileset = formic.FileSet(include="**", exclude="/engine/**", directory="/path/to/src")
甲酸使用相對於工作目錄路徑 - 這可能是src
父,但如果沒有,我建議使用一個完全合格的路徑。在上面的示例中,搜索從src
開始,包括所有內容(**
)。
Formic按照Ant的規則排除了一堆文件(如Git/Mercurial/CVS/SVN工作目錄)。您可以使用額外的參數default_excludes=false
關閉此行爲。
您可以通過傳遞一個列表而不是一個字符串來指定多個包含和排除。
泄露 - 我是這個軟件包的作者。