遞歸更改檔案的擁有者,但不更改目錄

遞歸更改檔案的擁有者,但不更改目錄

我有一個包含 ~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

相關內容