我只是搜索(遞歸)的所有shell腳本文件夾中:如何製作批處理過濾的腳本可執行文件?
$ find * | ag "\.sh\b"
現在我該如何讓他們的可執行文件,像
$ (lambda file_list: chmod +x file_list) (find * | ag "\.sh\b")
對不起,這個奇怪的Python /殼牌僞代碼,我不知道用另一種方式簡潔地傳達它。
我只是搜索(遞歸)的所有shell腳本文件夾中:如何製作批處理過濾的腳本可執行文件?
$ find * | ag "\.sh\b"
現在我該如何讓他們的可執行文件,像
$ (lambda file_list: chmod +x file_list) (find * | ag "\.sh\b")
對不起,這個奇怪的Python /殼牌僞代碼,我不知道用另一種方式簡潔地傳達它。
只需使用find
的-exec
選項:
find -type f -name '*.sh' -exec chmod +x {} +
的chmod
命令通過附加每個選定文件構建名稱末尾:chmod +x f1.sh f2.sh ...
。 {}
被替換爲正在處理的當前文件名。見man find
。
關於當前的命令
您當前的指令不正確,主要是因爲你是隱式傳遞所有節點在當前目錄下find
由於該星號(*
)擴大到所有文件在當前目錄:find file1 file2 dir1 dir2 ...
。顯然,找到.sh
擴展名的所有文件的方式並不是非常有效。
第二個問題是使用ag
工具,因爲find
非常能夠按模式搜索文件名。例如,閱讀有關-name
,-path
和-regex
選項。爲了找到.sh
擴展名的所有文件,只需將'*.sh'
模式傳遞給-name
選項(「測試」,根據find
)。請注意,該模式應該被轉義以防止在shell上下文中的解釋。