我試圖添加一個shell函數(zsh)mexec
以在所有直接子目錄中執行相同的命令,例如具有下列結構在所有直接子目錄中執行命令
~
-- folder1
-- folder2
mexec pwd
將顯示例如
/home/me/folder1
/home/me/folder2
我使用find
拉立即子目錄。問題是讓傳入的命令執行。這是我的第一個函數確定指標:
mexec() {
find . -mindepth 1 -maxdepth 1 -type d | xargs -I'{}' \
/bin/zsh -c "cd {} && [email protected];";
}
只執行該命令本身,而是在爭論未通過即mexec ls -al
行爲完全像ls
更改第二行/bin/zsh -c "(cd {} && [email protected]);"
,mexec
作品只是mexec ls
但節目這個錯誤mexec ls -al
:
zsh:1: parse error near `ls'
去使用exec路線找到
find . -mindepth 1 -maxdepth 1 -type d -exec /bin/zsh -c "(cd {} && [email protected])" \;
給我同樣的事情,這導致我相信有一個問題,我如何將參數傳遞給zsh。這也似乎如果我使用bash是一個問題:顯示的錯誤是:
-a);: -c: line 1: syntax error: unexpected end of file
什麼是實現這一目標的好方法?
在這種情況下'ls -al'只是我在每個子目錄中運行的示例命令。無論我使用什麼命令,我都希望它是自由形式的。 我會嘗試for循環。 – Zahymaka
@Zahymaka:我添加了一個更通用的方法來做到這一點,通過添加一個函數。當你發現它解決你的問題時,不要忘記接受/提升它。 – Inian
如果目錄名稱(zsh:1:unmatched')中有引號,則此功能不起作用 – wilsotc