2017-05-23 16 views
3

ディレクトリとすべてのサブディレクトリ内のすべてのファイルのファイルアクセス権を変更するBashスクリプトが必要です。Bashスクリプト:ファイルアクセス権を再帰的に変更する

for each file in directory (and subdirectories) 
    if i am the owner of the file 
     if it is a directory 
     chmod 770 file 
     else 
     chmod 660 file 

私はそれが難しい作業ではないと思いますが、私はBashスクリプトではあまり経験がありません。あなたの助けに感謝します! :D

答えて

1
あなたはユーザーによってフィルタリングする -userオプション、およびファイルタイプによってフィルタリングする -typeオプションを指定して、 findコマンドの2回の呼び出しでそれを行うことができ

:実際に、テストの後echoを削除

find . -user "$USER" -type d -exec echo chmod 770 {} + 
find . -user "$USER" -not -type d -exec echo chmod 660 {} + 

アクセス許可を変更します。

1

findここで役立ちます:特定の基準(この場合は所有者)を満たすファイルやディレクトリを再帰的に検索します。もう1つのトリックはchmodXxではなく)フラグを使用して、ディレクトリを実行可能にしますが、通常のファイルには使用しません。 xargsを介して一緒にそれを置く:私はこれをテストしていないと、それはおそらく、少し間違っている

​​

。私が最初にそれをテストすることをお勧めし:)

1

使用find

find topdirectory -user "$USER" \(-type f -exec chmod 660 {} + \) -o \(-type f -exec chmod 770 {} + \) 
関連する問題