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

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

이것을 사용하여 디렉토리의 모든 파일을 나열하고 내가 가지고 있는 파일만 표시할 수 있습니다. 그러면 가장 좋은 쉘 명령 "oneliner"는 무엇입니까?

답변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

참고: 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)

관련 정보