다른 사람이 소유하지 않은 파일 찾기


182

특정 사용자가 소유하지 않은 파일을 찾기 위해 디렉토리를 재귀 적으로 살펴보고 있는데 어떻게 작성 해야할지 모르겠습니다.

답변:


274

find (1) 유틸리티에는 "!"를 사용하여 부정 ( "역전") 할 수있는 기본 노드가 있습니다. 운영자. 그러나 프롬프트에서 셸 메타 문자이므로 백 슬래시로 부정을 피해야합니다. 결과:

find . \! -user foo -print

6
탈출은 !선택적인 것으로 보인다
doub1ejack

1
출력을 파이핑하여 xargs -I{} -P3 -- ${cmdhere} {}$ {cmdhere}가 각 파일에서 병렬로 작동 하도록 할 수 있습니다. cmdhere :: = 표준 유닉스 유틸리티; 표준 유닉스 유틸리티 :: = chmod, chown, stat, ls, ...
Dwight Spencer

1
@sorin 당신은 find . ...또는 xargs첫 번째 또는 두 번째 방법으로 배관을 의미 합니까?
Kev

3
발견 -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
나는 당신에게 기술에 대한 투표를 할 것입니다. 그러나 사람들은 당신이 해석하는 것을 의미한다면 일반적으로 "누구가 소유하지 않았다"고 말할 것입니다.
시부 미

2
@ 시부 미-네, 머리카락이 갈라지는 사람들에게 맞습니다. 내가 직면 한 문제는 문자 그대로 모든 사용자가 소유하지 않은 파일을 찾아야한다는 것입니다. 웹 서버 새로 고침 및 마이그레이션 후에 나타났습니다. 일부 사용자 / 그룹 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. 한 줄에 : (setopt dotglob; ls **/*(^U) ). 괄호는 하위 셸에서 실행되므로 setopt nodotglob완료 후에 실행할 필요가 없습니다 .
Zorawar
당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.