web-dev-qa-db-ja.com

隠しファイルまたは隠しディレクトリを含むディレクトリを再帰的に変更する方法

再帰フラグを持つchownのように見えますが、隠しディレクトリまたはファイルでは機能しません。そのための簡単な回避策はありますか?

38
toby

-Rフラグが機能することは間違いありません。機能しないのは、コマンドラインの使用の早い段階で私が失敗したのは、隠しファイル/ディレクトリがあるディレクトリで*を使用しているためです。そうやって

$ chown -R /home/user/*

隠しファイルと隠しディレクトリは行いません。しかし、あなたがそれに続くなら

$ chown -R /home/user/.[^.]*

次に、すべての隠しファイルを実行します(ただし、.とは異なり、..または/home/user/.*は実行できません)。それをすべて言っても、私は期待します

$ chown -R /home/user

/home/user内のすべての隠しファイルとディレクトリを取得するには-もちろん、ディレクトリ自体の権限も変更されますが、これは意図したものではない可能性があります。

60
Hamish Downer

私は次のコマンドがこれのために働くべきだと信じています

chown -hR userid:usergroup /nameofdirectory/nameofsubdir/
9
MattrixHax

「chown -R」は機能しますが、代わりにfindを使用することもできます。

 find /path/to/dir -exec chown USER {} \;
8
hayalci

dotglob属性を一時的に変更して展開できます。ファイルを元に戻します。

shopt -s dotglob; chown -R user:group FOLDER; shopt -u dotglob

dotglobの詳細については、こちらをご覧ください ここ

4
stdcall

Forループとls -Aオプションを使用すると、すべての隠しファイルとディレクトリ...を除外して、すべての隠しファイルとディレクトリの所有権を変更できます。

for i in `ls -A | grep "^\."`;do chown -R user:group $i;done

xargsオプションをls -Aとともに使用します

ls -A | grep "^\." | xargs chown user:group

詳細については ここをクリックしてサイトにアクセスしてください

chownは隠しファイルおよび隠しディレクトリで動作します。次の例では、_~/some/folder_内のallファイルのユーザーとグループの所有権を変更します。 すべてファイルには、すべての非表示ファイル(例:_.bashrc_、_.profile_など)およびフォルダが含まれます_~/some/folder_レベル以下。特に、_~/some_の所有権を変更したくないため、ファイル_~/some/.._を所有権の変更から除外します。

_$ cd ~/some/folder 
$ Sudo chown -R usrname:grpname . 
$ 
_
1
Seamus

また、あなたが私のようであれば、おそらく現在のディレクトリからchownを実行しているでしょう。私は次のように実行することに慣れていました:chown Rails.rails -R *。次のように、アスタリスクをドット(現在のディレクトリの略)に変更するだけです:chown Rails.rails -R .はすべての隠しディレクトリを取り込みます。

1
Craig

現在のユーザーの現在のディレクトリとサブディレクトリにあるすべてのファイルを変更する。

find . -exec chown $(whoami) {} \;

または、権限が制限されているためにユーザーが一部のファイルをchownできない場合。

Sudo find . -exec chown $(logname) {} \;
0
5p0ng3b0b