이것을 사용하여 디렉토리의 모든 파일을 나열하고 내가 가지고 있는 파일만 표시할 수 있습니다. 그러면 가장 좋은 쉘 명령 "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
:
u
ID사용자 ID가 소유한 파일ID그것이 숫자라면. 그렇지 않으면,ID사용자 이름 지정: " " 뒤의 문자는
u
구분 기호로 처리되며, 해당 문자와 일치하는 다음 구분 기호 사이의 문자열은 사용자 이름으로 처리됩니다. 시작 구분 기호 '[
', '{
' 및 '<
'는 각각 최종 구분 기호 ']
', '}
' 및 '>
'와 일치하며 다른 문자는 자체적으로 일치합니다. 선택한 파일은 이 사용자가 소유한 파일입니다. 예를 들어, "u:foo:
" 또는 "u[foo]
"foo
은 사용자 " "이 소유한 파일을 선택합니다.
예를 들어 사용자ID
print -rl ./*(u1027)
또는 사용자 이름을 사용하십시오
print -rl ./*(u_yourusernamegoeshere_)
UID
1027
평소와 같이 이를 다른 한정자, 수정자 등과 결합할 수 있습니다. 예를 들어 숨김 여부 에 관계없이 사용자가 소유하고 정렬한 일반 파일을 나열하는 등의 작업을 수행할 수 있습니다 mtime
.
print -rl ./*(.Domu1027)