
我有一個包含 ~50k 目錄和 ~1m 檔案的目錄。
我想更改所有文件的所有者(或權限),但不是目錄。這是因為我正在嘗試從遠端伺服器 SCP 附加檔案(約 150k 目錄和約 3.6m 檔案)。
我擁有的目錄是遠端目錄的一部分,但是 scp 失敗...
如果我再次運行 SCP,它將透過覆蓋我已經從遠端目錄複製的檔案來重新開始。
答案1
您可以使用find
,它還有一個額外的優點,即ARG_MAX
在此過程中不會觸發 。從父目錄:
find . -type f -exec chown newowner {} +
為了chmod
:
find . -type f -exec chmod 644 {} +
-type f
只會find
文件。
答案2
另一種選擇是使用xargs
.您需要使用該-print0
選項find
以及相應的-0
選項xargs
:
find . -type f -print0 | xargs -0 chown newuser:newgroup
從man find
:
-列印0
在標準輸出上列印完整的檔案名,然後空字元。這允許檔案名稱包含換行符號或其他類型的空格由處理 find 輸出的程式正確解釋。此選項對應於 xargs 的 -0 選項。
xargs
也會正確處理ARG_MAX
。