AIX には、以下のディレクトリー構造があります。
codeRepo/REPO1/AREA1/objects
codeRepo/REPO1/AREA2/SUBAREA1/objects
codeRepo/REPO1/AREA2/SUBAREA2/objects
codeRepoでツリーのchown myUser *
すべてのディレクトリで実行したいと思います。objects
ご覧のとおり、場所ごとに異なるオブジェクトディレクトリがあります。
答え1
サブファイル以外のディレクトリのみを削除するには、find -exec
次のように使用します。
find -type d -name objects -exec chown myUser {} \;
これを行うには:
-type d
ディレクトリのみを選択する
-name objects
正確に「object」という名前のディレクトリのみを検索します。見つかったパスごとに、-exec chown myUser {} \;
次のことを行いますchown myUser {}
({}をパスに置き換えます)。
chown
内部のすべてのファイルchown
も削除するにはchown -R
。
答え2
あなたは自分の質問にほとんど答えました。答えは、再帰オプション-Rを使用することです。
コマンドの実行sudo chown -R リッチコードRepo/(ユーザー名がrichieだと仮定)
これにより、すべてのファイル/フォルダを所有者として再帰的に設定できますが、できるだけツリーの上に設定するため、より多くのファイル/フォルダが所有者として指定されます。強い方法。
答え3
bash
オプションを使用してglobstar
目的の深さに移動します**
。
いつcodeRepo
:
shopt -s globstar
chown myUser REPO1/AREA*/**/objects
AREA
正確さのために名前の後に数字(文字)が1つしかない場合は、単一の文字を?
表すために使用します。
chown myUser REPO1/AREA?/**/objects
同様に、2文字の場合:
chown myUser REPO1/AREA??/**/objects