find_sh.sh
find . -type f -name "*.sh" -exec basename {} .sh \\;
find
찾는다,
.
해당/하위 디렉토리 모두에서
-type f
일반 파일 타입의
-name “*.sh”
이름이 ‘*.sh’ 인
-exec basename {} .sh \\;
basename을 통해서 파일명을 가져온다. 또한 접미어 “.sh”
는 제거한다.
\\;
는 연속적인 명령어로 이해하도록함 (;
로하면 bash가 명령어 분리로 이해할 수도 있다.)
What does '{} \;' mean in the 'find' command context?
-exec 옵션에 대해서...
- exec utility [argument ...] {} +
Same as -exec, except that “{}” is replaced with as many pathnames
as possible for each invocation of utility. This behaviour is
similar to that of xargs(1). The primary always returns true; if
at least one invocation of utility returns a non-zero exit status,
find will return a non-zero exit status.
- 따라서 -exec basename {} .sh라는 의미는 다음과 같다.
- find 명령어를 통해서 찾은 목록의 인자를 basename {}.sh 로 넘긴다.
- basename {} .sh 를 실행하는데 이 때 인자는 앞서 찾은 파일들의 목록이다.
- basename {} .sh에서 {} 부분만 출력된다. (man basename 참고)