Chgrp

自 Apache Ant 1.6 起.

說明

變更指定目錄內檔案或所有檔案的群組。目前僅在 Unix 下有效。群組屬性等同於 chgrp 指令的對應參數。

可以使用巢狀的 <fileset><dirset><filelist> 元素指定 FileSetDirSetFileList

自 Ant 1.7 起,此任務支援任意 資源集合作為巢狀元素。

預設情況下,此任務會單獨呼叫底層 chgrp 指令。如果您處理大量檔案,可能會導致指令行對您的作業系統而言過長。如果您遇到此類問題,應將此任務的 maxparallel 屬性設定為非零值。要使用的數字高度取決於檔案名稱的長度(目錄樹的深度)和作業系統,因此您必須稍加嘗試。POSIX 建議指令行長度限制至少為 4096 個字元,這可能會為您提供近似值,可用作這些實驗的初始值。

預設情況下,此任務不會執行任何動作,除非它偵測到它是在 Unix 系統上執行。如果您確定在 PATH 上有與 Unix 指令在指令行上相容的 chgrp 可執行檔,您可以使用任務的 os 屬性,並將其值設定為目前的作業系統。

參數

屬性 說明 必要
file 必須變更其群組的檔案或目錄。 是,除非指定巢狀的 <fileset|filelist|dirset> 元素
group 新的群組。
parallel 使用單一 chgrp 指令處理所有指定的檔案。 否;預設為 true
type 下列之一:filedirboth。如果設定為 file,則只會變更純文字檔案的群組。如果設定為 dir,則只會考慮目錄。
注意:type 屬性不適用於巢狀的 dirsetdirset 始終隱含假設 type 為 dir
否;預設為 file
maxparallel 限制平行處理量,一次最多傳遞這麼多個來源檔案。設定為負整數表示無限制。 否;預設為無限制
verbose 是否在執行後列印摘要。 否;預設為 false
os 可以執行指令的作業系統清單。
osfamily <os> 條件中使用的作業系統家族。 否;預設為 unix

範例

start.sh 檔案屬於 UNIX 系統上的 coders 群組。

<chgrp file="${dist}/start.sh" group="coders"/>

${dist}/bin 下方的所有 .sh 檔案屬於 UNIX 系統上的 coders 群組。

<chgrp group="coders">
  <fileset dir="${dist}/bin" includes="**/*.sh"/>
</chgrp>

shared/sources1 下方的所有檔案(除了任何名為 trial 的目錄下方)屬於 UNIX 系統上的 coders 群組。此外,所有屬於 id=other.shared.sources 的 FileSet 的檔案都會取得相同的群組。

<chgrp group="coders">
  <fileset dir="shared/sources1">
    <exclude name="**/trial/**"/>
  </fileset>
  <fileset refid="other.shared.sources"/>
</chgrp>

讓所有 .test.jsp.new 檔案都屬於 webdev 群組。名稱以 test_ 開頭的目錄也會屬於 webdev,但如果有一個目錄名稱以 .new 結尾或一個檔案名稱以 test_ 開頭,它就不會受到影響。

<chgrp group="webdev" type="file">
  <fileset dir="/web">
    <include name="**/*.test.jsp"/>
    <include name="**/*.new"/>
  </fileset>
  <dirset dir="/web">
    <include name="**/test_*"/>
  </dirset>
</chmod>