리눅스 find 명령어는 파일 시스템을 검색하여 주어진 규칙에 맞는 파일들을 찾아 파일들의 이름과 위치를 표준 출력(stdout)으로 출력합니다. 이 출력 메시지는 tar과 같은 명령어로 쉽게 리다이렉션될 수 있습니다.
이번 포스팅에서는 find 명령어를 사용하여 특정 사용자의 파일을 찾고, 해당 파일을 다른 디렉토리로 복사하는 방법에 대해 알아보겠습니다.
find 명령어로 특정 사용자의 파일 찾기
find 명령어로 특정 사용자의 파일을 찾으려면 -user
옵션을 사용합니다. -user
옵션 뒤에 사용자 이름을 지정하면 해당 사용자 소유의 파일들을 찾습니다.
예를 들어, harry
사용자의 파일을 찾으려면 다음과 같이 명령을 실행합니다.
find / -user harry
이 명령은 전체 파일 시스템에서 harry
사용자 소유의 파일들을 모두 찾습니다.
find 명령어로 특정 사용자의 파일 복사하기
find 명령어로 찾은 파일들을 다른 디렉토리로 복사하려면 -exec
옵션을 사용합니다. -exec
옵션 뒤에는 파일 복사에 사용할 명령을 지정합니다.
예를 들어, /tmp/harry
디렉토리에 harry
사용자의 파일들을 모두 복사하려면 다음과 같이 명령을 실행합니다.
find / -user harry -exec cp -apR {} /tmp/harry/ \;
이 명령은 harry
사용자 소유의 파일들을 모두 찾고, 해당 파일들을 /tmp/harry
디렉토리에 cp
명령을 사용하여 복사합니다.
find 추가 옵션
find 명령어에는 다양한 옵션을 사용하여 검색 조건을 지정할 수 있습니다. 다음은 find 명령어의 몇 가지 추가 옵션입니다.
-perm
옵션: 파일의 권한을 조건으로 지정합니다.-perm -6000
: set-uid와 set-gid가 동시에 갖는 퍼미션을 찾습니다.-perm +6000
: set-uid와 set-gid중 둘 중 하나 이상의 퍼미션 값을 가진 것을 찾습니다.
-type
옵션: 파일의 유형을 조건으로 지정합니다.-type l
: 심볼릭 링크를 찾습니다.-type d
: 디렉토리를 찾습니다.
find 예제
다음은 find 명령어를 사용하여 특정 사용자의 파일을 찾고, 해당 파일을 다른 디렉토리로 복사하는 몇 가지 예제입니다.
harry
사용자 소유의.txt
파일들을 모두/tmp/harry
디렉토리로 복사합니다.
find / -user harry -type f -name "*.txt" -exec cp -apR {} /tmp/harry/ \;
harry
사용자 소유의 set-uid 또는 set-gid 파일들을 모두/tmp/harry
디렉토리로 복사합니다.
find / -user harry -perm -6000 -exec cp -apR {} /tmp/harry/ \;
harry
사용자 소유의 심볼릭 링크들을 모두/tmp/harry
디렉토리로 복사합니다.
find / -user harry -type l -exec cp -apR {} /tmp/harry/ \;
이상으로 리눅스 find 명령어로 특정 사용자의 파일 찾기 및 복사하는 방법에 대해 알아보았습니다.