我看過很多次,如果我想執行的東西在所有子目錄我應該運行類似於下列之一:應用腳本子目錄
find . -name '*' -exec command arguments {} \;
find . -type f -print0 | xargs -0 command arguments
find . -type f | xargs -I {} command arguments {} arguments
問題是,它與corefunctions運行良好,但不是如預期的那樣,當命令是用戶定義的函數或腳本。如何解決它?
所以,我在找的是一行代碼或腳本中,我可以爲myfunction
或myscript.sh
更換command
和它關係到每一個子目錄從當前目錄並執行上述功能或腳本那裏,不管爭論我供應。
用另一種方式解釋,我想要在所有的子目錄上工作,就像for file in *; do command_myfunction_or_script.sh arguments $file; done
在當前目錄上工作一樣。
這很棒。我適應了這個:'STDIR = $ PWD;在$(find * -prune -type f 2> &-); do命令中執行「$ file」; done; cd「$ STDIR」;對於$中的dir(find。-type d 2> &-); do cd「$ dir」但是當文件或目錄名稱中有空格時會出現問題我該如何解決這個問題? – Strapakowsky
您可以通過將bash Internal Field Separator更改爲換行來解決此問題,這樣名稱就不會在空格上分割。更新我的答案以顯示此信息,希望它有幫助! –
...但是如果在文件名中有換行符,該怎麼辦? – kojiro