"Fd-find"의 두 판 사이의 차이

(rust fd-find 사용방법)
 
(owner 옵션 추가)
 
(사용자 2명의 중간 판 7개는 보이지 않습니다)
2번째 줄: 2번째 줄:
;fd-find
;fd-find
;fd
;fd
;
* https://github.com/sharkdp/fd/blob/master/README.md
* Rust로 작성한 find 명령 호환 명령. 멀티 쓰레드로 동작하여 경우에 따라 find에 비해 빠른 결과를 얻을 수 있다.
* Rust로 작성한 find 명령 호환 명령. 멀티 쓰레드로 동작하여 경우에 따라 find에 비해 빠른 결과를 얻을 수 있다.
* find 명령 완전한 대체는 할 수 없는 상태 (2018년 11월 2일 기준)
* find 명령 완전한 대체는 할 수 없는 상태 (2018년 11월 2일 기준)
** 파일 소유권(uid), 권한(perm), 파일비교(newer), 액세스타임(atime) 등 자주 쓰이지 않지만 있으면 매우 편한 옵션 부재
** 파일 소유권(uid), 권한(perm), 파일비교(newer), 액세스타임(atime) 등 자주 쓰이지 않지만 있으면 매우 편한 옵션 부재
*** 8.1.0 에서 uid에 해당하는 owner(-o, --owner) 옵션 추가
** 더 짧은 명령어를 제공한다면서 find '-mtime' 옵션(파일변경시간)을 '--changed-within', '--changed-before'로 제공.
** 더 짧은 명령어를 제공한다면서 find '-mtime' 옵션(파일변경시간)을 '--changed-within', '--changed-before'로 제공.


==예제==
==예제==
* 3개월 넘은, 1메가 크기 이상의 로그 파일을 압축해서 보관하고 싶은 경우. 이미 압축된 파일은 제외해야 하는 상황을 가정.
<pattern>에 정규표현식 사용 가능, -E <pattern>은 정규표현식 사용 불가
** find 사용시
* 현재 경로의 logs 디렉토리에서 zip, gz 압축 파일만 찾고 싶은 경우
*** <code>find ./logs -type f -mtime +90 ! \(  -name "*zip" -or  -name "*gz" -or  -name "*tgz" \) -size +1M  -exec pigz {} \;</code>
 
** fd 사용시
{{소스헤더|find 사용시}}
*** '-or'가 없고, 패턴을 묶는 '\( \)'가 없다. not (!)도 없음.
<source lang='bash'>
*** <code>fd -E '*zip' -E '*gz' -E '*tgz' -P "./logs" -t f --changed-within 2month -S +1m -x pigz {} \;</code>
find ./logs -type f \(  -name "*zip" -or  -name "*gz" \)
</source>
 
{{소스헤더|fd 사용시}}
<source lang='bash'>
fd -t f '.*\.zip|.*\.gz' ./logs
</source>
:→ 정규표현식 사용 가능
 
* 현재 경로의 logs 디렉토리에서 3개월 넘은, 1메가 크기 이상의 로그 파일을 압축해서 보관하고 싶은 경우. 이미 압축된 파일은 제외해야 하는 상황을 가정.
 
{{소스헤더|find 사용시}}
<source lang='bash'>
find ./logs -type f -mtime +90 ! \(  -name "*zip" -or  -name "*gz" -or  -name "*tgz" \) -size +1M  -exec pigz {} \;
</source>
 
{{소스헤더|fd 사용시}}
<source lang='bash'>
fd -E '*zip' -E '*gz' -E '*tgz' -p "./logs" -t f --changed-before 3month -S +1m -x pigz {} \;
</source>
:→ '-or'가 없고, 패턴을 묶는 '\( \)'가 없다. not (!)도 없음.
:→ -E, --exclude 옵션의 패턴은 정규표현식 적용이 안 됨.


==같이 보기==
==같이 보기==
* [[Rust]]
* [[Rust]]
* [[리눅스 find]]
==참고==
* https://github.com/sharkdp/fd/blob/master/README.md
[[분류: 리눅스]]

2020년 7월 24일 (금) 11:04 기준 최신판

1 개요[ | ]

fd-find
fd
  • Rust로 작성한 find 명령 호환 명령. 멀티 쓰레드로 동작하여 경우에 따라 find에 비해 빠른 결과를 얻을 수 있다.
  • find 명령 완전한 대체는 할 수 없는 상태 (2018년 11월 2일 기준)
    • 파일 소유권(uid), 권한(perm), 파일비교(newer), 액세스타임(atime) 등 자주 쓰이지 않지만 있으면 매우 편한 옵션 부재
      • 8.1.0 에서 uid에 해당하는 owner(-o, --owner) 옵션 추가
    • 더 짧은 명령어를 제공한다면서 find '-mtime' 옵션(파일변경시간)을 '--changed-within', '--changed-before'로 제공.

2 예제[ | ]

<pattern>에 정규표현식 사용 가능, -E <pattern>은 정규표현식 사용 불가

  • 현재 경로의 logs 디렉토리에서 zip, gz 압축 파일만 찾고 싶은 경우
find 사용시
find ./logs -type f \(  -name "*zip" -or  -name "*gz" \)
fd 사용시
fd -t f '.*\.zip|.*\.gz' ./logs
→ 정규표현식 사용 가능
  • 현재 경로의 logs 디렉토리에서 3개월 넘은, 1메가 크기 이상의 로그 파일을 압축해서 보관하고 싶은 경우. 이미 압축된 파일은 제외해야 하는 상황을 가정.
find 사용시
find ./logs -type f -mtime +90 ! \(  -name "*zip" -or  -name "*gz" -or  -name "*tgz" \) -size +1M  -exec pigz {} \;
fd 사용시
fd -E '*zip' -E '*gz' -E '*tgz' -p "./logs" -t f --changed-before 3month -S +1m -x pigz {} \;
→ '-or'가 없고, 패턴을 묶는 '\( \)'가 없다. not (!)도 없음.
→ -E, --exclude 옵션의 패턴은 정규표현식 적용이 안 됨.

3 같이 보기[ | ]

4 참고[ | ]

문서 댓글 ({{ doc_comments.length }})
{{ comment.name }} {{ comment.created | snstime }}