誰かが所有していないファイルを探す


182

特定のユーザーが所有していないファイルを見つけるためにディレクトリを再帰的に調べようとしていますが、これをどのように書くかわかりません。

回答:


274

find(1)ユーティリティには、「!」を使用して否定(「反転」)できるプライマリがあります。オペレーター。ただし、プロンプトでは、シェルのメタ文字であるため、バックスラッシュで否定をエスケープする必要があります。結果:

find . \! -user foo -print

6
エスケープは!オプションのようです
doub1ejack

1
出力をパイプ処理すると、xargs -I{} -P3 -- ${cmdhere} {}$ {cmdhere}で各ファイルを並列に操作できます。cmdhere :: =標準のUNIXユーティリティ。標準のUNIX utils :: = chmod、chown、stat、ls、...
ドワイトスペンサー

1
@sorinは、find . ...またはxargs最初の方法または2番目の方法への配管を意味しますか?
Kev 14

3
findには-execフラグがあります-> find . ! -user foo -exec chown <owner>:<group> {} \;
pastephens

1
所有者情報を出力として追加する方法は?
Duc Tran

38

誰かが所有していないファイルを探す

他の人は、本文で「特定のユーザーが所有していない」という質問に答えています。以下は、定評のある質問に答えるものですが、提供されていません。

$ find / -nouser

次のように使用できます。

$ sudo find /var/www -nouser -exec chown root:apache {} \;

そして関連するもの:

$ find / -nogroup

3
専門性に投票しますが、通例、「誰にも所有されていない」と言われます。
Shibumi

2
@Shibumi-ええ、髪の毛を割るのにちょうどいいですね。私が直面した問題は、文字通りどのユーザーも所有していないファイルを見つける必要があったことです。Webサーバーの更新と移行後に表示されました。一部のユーザー/グループIDが変更されたため、chownをスクリプト化する必要がありました。
jww

12

-userユーザーまたはユーザーIDで検索し!、述語を反転します。だから、! -user ...


2
受け入れられた回答に何も追加せず、他の可能な回答(以下のzsh globパターンなど)をマスクするため、反対票を投じました。
Ulysse BN

9

あなたはこれを使うことができます:

find <dir> ! -user <username> 

2
受け入れられた回答に何も追加せず、他の可能な回答(以下のzsh globパターンなど)をマスクするため、反対票を投じました。
Ulysse BN

5

z-shell(zsh)を使用すると、

ls -laR *(^U)

または

ls -la **/*(^U)

あなたが所有していないすべてのファイルを再帰的に検索します。


上記のコマンド-aは、ワイルドカード展開のため、フラグを使用してもドットファイルをリストしないことは事実です。ドットファイルをキャッチするには、zsh dotglobオプションを使用しますsetopt dotglob。1行で:(setopt dotglob; ls **/*(^U) )。括弧はサブシェルで実行するため、setopt nodotglob終了後に実行する必要はありません。
Zorawar
弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.