
我正在嘗試更改當前目錄中某些文件(和目錄)的所有權和權限。我試過這個:
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]*
$()