내가 소유한 파일만 나열하는 가장 좋은 방법

내가 소유한 파일만 나열하는 가장 좋은 방법

디렉토리의 모든 파일을 나열하고 내가 소유한 파일만 표시하는 데 사용할 수 있는 가장 좋은 셸 명령 "one liner"는 무엇입니까?

답변1

짧은 한 줄의 내용은 다음과 같습니다.

find . -maxdepth 1 -user $USER

현재 디렉토리를 찾고 있다면 .. 가 사용 가능한지 여부를 모르는 경우 또는 $USER로 바꿀 수 있습니다 .$LOGNAME$(whoami)

-ls파일 세부정보를 표시하려면 추가하세요 . 예:

find / -maxdepth 1 -user root -ls

사용자 정의 플래그를 제공하려면 ls다음을 통해 사용할 수 있습니다 -exec.

find / -maxdepth 1 -user root -exec ls -ld {} +

(이 경우 디렉토리를 내용이 아닌 그 자체로 나열하려면 -d플래그가 필요합니다.)ls

답변2

아래 명령을 사용하십시오

[username@localhost~]$ find / -user username -exec ls -l {} \; 2>/dev/null

사용자 이름이 소유한 전체 시스템에서 모든 파일을 찾습니다. 특정 디렉토리에서 찾으면 / 위치를 바꾸십시오.

[username@localhost~]$ find /path/of/direcotry -user username -exec ls -l {} \; 2>/dev/null

NB:2>/dev/null은 오류 출력을 무효화합니다.

답변3

출력 형식을 지정하지 않았으므로 ls 및 grep을 사용하여 이 작업을 수행할 수도 있습니다.

ls -lG | grep username

먼저 -l 매개변수와 함께 ls를 사용하여 사용자 이름과 그룹 이름이 포함된 목록을 가져옵니다.

그런 다음 -G 매개변수를 사용하여 결과에서 그룹 이름을 제거합니다.

그런 다음 grep으로 파이프하여 원하는 사용자 이름으로 모든 결과를 얻습니다.

편집하다: 댓글에서 지적했듯이, 이것은금고는 아니다또는 방탄 솔루션 - 그러나 상황에 따라 빠르고 지저분한 솔루션이 될 수도 있습니다. 대화형으로는 허용될 수 있지만 어떤 스크립트에서도 사용해서는 안 됩니다!

답변4

를 사용 하면 zsh다음을 사용하여 그렇게 할 수 있습니다.글로벌 한정자u:

uID

사용자 ID가 소유한 파일ID그것이 숫자라면. 그렇지 않으면,ID사용자 이름을 지정합니다. ' ' 뒤의 문자는 u구분 기호로 사용되며 해당 문자와 ​​다음 일치 구분 기호 사이의 문자열은 사용자 이름으로 사용됩니다. 시작 구분 기호 ' [', ' {' 및 ' <'는 각각 최종 구분 기호 ' ]', ' }' 및 ' >'와 일치합니다. 다른 문자는 자체적으로 일치합니다. 선택한 파일은 이 사용자가 소유한 파일입니다. 예를 들어, ' u:foo:' 또는 ' u[foo]'은 사용자 ' foo'이 소유한 파일을 선택합니다.

예를 들어 사용자와 함께ID

print -rl ./*(u1027)

또는 사용자 이름으로

print -rl ./*(u_yourusernamegoeshere_)

평소와 같이 이를 다른 한정자, 수정자 등과 결합하여 숨김 여부에 관계없이 사용자가 소유하고 UID 1027다음을 기준으로 정렬한 일반 파일만 나열할 수 있습니다 mtime.

print -rl ./*(.Domu1027)

관련 정보