'find'에 해당되는 글 2건

  1. 2010.08.12 [FIND] find using regular expression (-regex)
  2. 2010.08.12 [BASH] 공백문자(space)가 포함된 파일패스 list 처리

[FIND] find using regular expression (-regex)

CS/Shell/Perl/Python 2010. 8. 12. 14:46
find manpage

-regex pattern
: True if the whole path of the file matches pattern using regular expression.  
: To match a file named "./foo/xyzzy", you can use the regular expression ".*/[xyz]*" or ".*/foo/.*", but not "xyzzy" or "/foo/".

manpage에 잘 나와있는데, 제대로 읽어보지도 않고 고생만 했다.
find 시 항상 하던데로 매칭을 "*.html" 과 같이 한것이 원인이었다.
-name과 같이 명시적으로 파일 이름만을 매칭 시키는 것이 아니기 때문에, 전체 패스를 매칭 시켜야 한다.

다음은, html, htm, xhtml, xhtm 파일을 매칭시키는 구문
HTML_FILES=$(find "$SOURCE_WWW_PATH" -iregex ".*\.x\{0,1\}html\{0,1\}")


혹은 -E(extended regular expression)을 사용하여
HTML_FILES=$(find -E "$SOURCE_WWW_PATH" -iregex ".*\.x?html?")

:

[BASH] 공백문자(space)가 포함된 파일패스 list 처리

CS/Shell/Perl/Python 2010. 8. 12. 14:09
FILES=$(find path -name "*.gz")
으로 파일을 찾아 루프로 넘기는 경우

for file in "$FILES"
do
    ...
done

FILES에 공백 문자가 포함된 경우("/root/some path/somefile")
file에는 /root/some 과 path/somefile 이 넘어오게 된다.

이런 경우, find는 \n으로 각 파일패스를 구분하므로, 구분자를 바꾸어 준다.

FILES=$(find path -name "*.gz")
IFS=$'\n"
for file in "$FILES"
do
    ...
done


: