Bash

遞歸全域?

  • February 16, 2022

我想寫這樣的東西:

$ ls **.py

為了獲取所有 .py 文件名,遞歸遍歷目錄層次結構。

即使有 .py 文件要查找,shell (bash) 也會給出以下輸出:

ls: cannot access **.py: No such file or directory

有什麼辦法可以做我想做的事嗎?

**編輯:**我想說明我對 的具體情況不感興趣ls,但問題是關於 glob 語法。

為了在 bash 中執行遞歸 glob,您需要globstarBash 版本 4 或更高版本的功能。

來自Bash 文件

globstar

   如果設置,**文件名擴展上下文中使用的模式將匹配所有文件以及零個或多個目錄和子目錄。如果模式後跟 a /,則只有目錄和子目錄匹配。

對於您的範例模式:

shopt -s globstar
ls -d -- **/*.py
find . -name '*.py'

*只做一個,都在目前目錄下操作

引用自:https://unix.stackexchange.com/questions/49913