*
, ?
, [ ]
이 있는데, 이는 shell에서 쓰는 pattern matching과 동일 동작.
가 붙으면 숨은 파일. 기본적으로 매칭되지 않는다. .
붙여 검색주의사항 1. Quote를 사용 하면 단어 분리, globbing 둘 다 일어나지 않는다.
$ ls
address.c address.h readObject.c readObject.h WriteObject.class
Address.class Address.java ReadObject.class ReadObject.java WriteObject.java
$ echo *.?
address.c address.h readObject.c readObject.h
for file in *.[ch]; do
echo $file
done
address.c
address.h
readObject.c
readObject.h
# globstar 옵션은 기본적으로 off 상태
# on 하자
shopt -s globstar
**
**/
(/
로 끝나면 끝나야만!!!! 디렉토리만 선택)/home/dhyang/workspace/scripts/rsync/
#!/usr/bin/bash
shopt -s globstar
pushd `dirname $0` > /dev/null
WORKING_DIR=`dirsl -l +0`
popd > /dev/null
WORKING_DIR=`dirname $WORKDING_DIR`
for dir in $WORKING_DIR/**/; do # WORKING_DIR/ 내부의 모든 -r recursive 이되, '/' 이 마지막에 붙어 디렉토리만 검색
echo $dir
done
log
'인 '디렉토리'~/tmp
log
가 들어간 디렉토리$PWD
.java
인 파일~/tmp
.png
, .jpg
, .gif
인 파일for file in ~/tmp/**/*.{png,jpg,gif}; do
echo $file
done
for file in $( find * -type f )