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


37

recowniveフラグを付けたchownは、隠しディレクトリやファイルでは機能しないようです。そのための簡単な回避策はありますか?

回答:


56

私は-Rフラグが機能することをかなり確信しています-とにかく常にそれが私のために持っています。動作しないもの、およびコマンドラインの使用の早い段階で私をつまずかせたのは、*隠しファイル/ディレクトリのあるディレクトリで使用していることです。だから

$ chown -R /home/user/*

非表示のファイルとディレクトリは実行しません。ただし、次の場合

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

次に、すべての隠しファイルを実行します(ただし、そうではない.../home/user/.*そうします)。すべてを言ったが、私は期待するだろう

$ chown -R /home/user

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


3
こうchownディレクトリにすることで、またはあなたが望むものであってもなくてもよい、ディレクトリ自体のパーミッションだけでなく、そのすべての内容を変更することを副作用があります。
-wfaulk

A +は私にとって魅力的でした。
SuperFamousGuy

試したところchown nginx:nginx -R /path/to/.[^.]*、所有権が.dot隠しファイルにしか変更されませんでした。すべてではない。
パトロス

@wfaulk @Hamish Downerが言及*.[.^]*たように、すべてのファイルを取得するには、両方を実行し、それに従う必要があります。
god_is_love

9

私は次のコマンドがこれに役立つはずだと思います

chown -hR userid:usergroup /nameofdirectory/nameofsubdir/

1
-hは、参照ファイルの代わりにシンボリックリンクに影響します(シンボリックリンクの所有権を変更できるシステムでのみ有用です)
R. van Twisk

8

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

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

5
GNUの検索で、使用してノートということ+はなく、;それは、ファイル/ディレクトリごとに1つのフォークの代わりにchownをするためにフォークの最小必要数を使用するよう-execにターミネータとしては、より効率的になります
シチュー

3

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

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

もっと上dotglob見つけることができるここに



1

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


2
副作用として、現在のディレクトリとそのすべてのコンテンツのアクセス許可を変更します。これは、必要な場合とそうでない場合があります。
wfaulk

1

chown非表示のファイルとディレクトリで動作します。次の例では、内のすべてのファイルのユーザーとグループの所有権を変更します~/some/folderすべてのファイルにはすべての非表示が含まれますファイル(例えば.bashrc.profile時など)やフォルダ~/some/folderレベル以下に。特に、の所有権を変更したくない~/someため~/some/..、所有権の変更からファイルを除外します。

$ cd ~/some/folder 
$ sudo chown -R usrname:grpname . 
$ 

これは私のために働いた
klor

0

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

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

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

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

-2

次のようなことができます

for i in `ls -A`;do chown -R user:group $i;done

-A資本 A)は除外として重要です「」および「..」


これにより、現在のディレクトリ内のファイルとサブディレクトリのみが変更され、下位レベルは変更されません。(OPが望んでいるものかもしれません。)また、ファイル名とディレクトリ名にスペース(またはタブ)が含まれていると、ブレークします。
-wfaulk
弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.