如何 chown/chmod 目前目錄中的所有檔案?

如何 chown/chmod 目前目錄中的所有檔案?

我正在嘗試更改當前目錄中某些文件(和目錄)的所有權和權限。我試過這個:

chown username:groupname .

……期望它會影響當前目錄中的所有文件,但只會影響我所在的目錄(這與我想要做的相反)。我想在所有文件上更改它而不影響我所在的當前目錄。

如何 chown 和 chmod 目前目錄中的所有檔案?

答案1

您想要使用chown username:groupname *, 並讓 shell 將 擴展*為目前目錄的內容。這將更改目前目錄中所有文件/資料夾的權限,但不會更改資料夾的內容。

您也可以執行chown -R username:groupname .,這將變更目前目錄的權限,然後在目前目錄和所有子資料夾內遞歸以變更權限。

chown -R username:groupname *將遞歸地更改所有檔案和資料夾的權限,同時保留目前目錄本身。這種風格和第一種風格是我最常使用的。

答案2

我想你想要這個:

chown username:groupname *

如果您還想遞歸地更改子目錄,則需要-R(-r已棄用) 開關:

chown -R username:groupname *

答案3

chown如果您是超級用戶,那就太棒了。我遇到了一個問題,其他人在我的目錄中運行make,現在擁有一些我無法修改的檔案。這是我處理檔案和目錄的解決方法,儘管.mkmeowner如果無法刪除它們,它會留下帶有後綴的目錄。

  • 以下腳本將傳遞給它的文件和目錄的所有權更改為當前用戶擁有,嘗試透過為不屬於當前用戶的每個目錄或文件創建新副本、刪除(或嘗試刪除)來解決權限問題原始文件,並適當重命名。
  • 其目的是作為“讓我成為所有者”的縮寫。我不使用底線,因為它們輸入起來很痛苦。

例子:

% mkmeowner .

% mkmeowner dirpath1 dirpath2
  • 它要求以下腳本mkmeownerone位於您的路徑中。

MKME擁有者:

#!/bin/bash
[ "x$1" == "x-h" ] || [ "x$1" == "x--help" ] && cat << END && exit 0
Usage: $0 dirorfile [direorfile2 ...]:
    change ownership of directories or files to current user.
    Current user must have permissions to read those and write to owner directory.
END
mkmeownerone=`which mkmeownerone`
for d in $*; do
    find "$d" -not -user `whoami` -exec $mkmeownerone {} \;
done

MKME擁有者:

#!/bin/bash
# change ownership of one file or directory
f="$1"
expr match "${f}" '.*\.mkmeowner$' > /dev/null && exit 1 # already tried to do this one
if mv -f "$f" "${f}.mkmeowner"; then
    cp -pr "${f}.mkmeowner" "$f" && rm -rf "${f}.mkmeowner"
    exit 0
fi
exit 1

答案4

更改username:groupname目前目錄中所有檔案的另一種方法是使用子 shell:

chown username:groupname $(find . -name "[a-zA-Z0-9]*")

bash 內建指令與子 shell 中的find正規表示式一起使用,可以構成更複雜的管理任務的基礎。[a-zA-Z0-9]*$()

相關內容