나는 C 커널을 만들고 있는데, bash 스크립트 파일을 사용하여 모든 소스를 컴파일하는 것을 더 쉽게하고 싶다. foreach 루프를 수행하는 방법을 알고 확장명이 .c 인 파일 만 가져온 다음 각 파일의 파일 이름을 가져와 gcc를 컴파일 할 수 있도록해야합니다.디렉토리와 bash의 모든 하위 디렉토리에서 파일을 얻으려면 어떻게해야합니까?
1
A
답변
4
사용 find
은 나무 를 걸어 다음은 while read
를 사용하여 생성 목록 읽기 : 당신이 파일에 대해 수행 할 작업이 없습니다 너무 복잡하고 광석을 사용하여 표현 될 수 있다면
find . -name \*.c | while read file
do
echo process $file
done
을 또는 두 개의 명령을 사용하는 경우 while
을 피하고 find
으로 모든 것을 만들 수 있습니다. 이를 위해 당신은 -exec
를 사용합니다 : 여기
find . -name \*.c -exec command {} \;
당신은 당신의 명령 대신 command
물품.
또한 -execdir
을 사용할 수 있습니다 :이 경우 command
에서
find . -name \*.c -execdir command {} \;
이 (발견 된 각 파일에 대한) 찾은 파일의 디렉토리에 실행됩니다.
1
당신이 GNU make
를 사용하는 경우, 당신은 쉘이 독립 제작의 장점 (그러나 큰 나무에 대한보다 느린 find
되는 단점)가 내장 함수 만 make
년대를 사용하여이 작업을 수행 할 수 있습니다
# Usage: $(call find-recursive,DIRECTORY,PATTERN)
find-recursive = \
$(foreach f,$(wildcard $(1)/*),\
$(if $(wildcard $(f)/.),\
$(call find-recursive,$(f),$(2)),\
$(filter $(2),$(f))))
all:
@echo $(call find-recursive,.,%.c)
관련 문제
- 1. bash의 모든 하위 디렉토리에있는 모든 파일을 gzip하는 방법
- 2. 개미 지퍼; 모든 하위 디렉토리와 파일을 제외하십시오.
- 3. 디렉토리와 서브 디렉토리에서 ftl 파일을 얻는 방법
- 4. glob를 사용하여 루트 디렉토리와 하위 디렉토리에서 파일을 가져올 수 있습니까?
- 5. 디렉토리와 하위 디렉토리에있는 모든 jpg 파일을 나열합니다.
- 6. Git의 특정 디렉토리와 하위 디렉토리에서 특정 파일 유형을 무시하려면 어떻게해야합니까?
- 7. PHP - 디렉토리와 하위 디렉토리에서 PHP 파일 만 표시
- 8. vim이 디렉토리와 모든 하위 디렉토리에서 .C 및 .H 파일을 모두 열 수있는 방법이 있습니까?
- 9. 웹 디렉토리에서 파일 목록을 얻으려면 어떻게해야합니까?
- 10. 모든 하위 디렉토리 파일을 포함하는 디렉토리에서 파일을 얻는 방법은 무엇입니까?
- 11. C++을 사용하여 디렉토리와 그 안에있는 모든 파일을 삭제하려면 어떻게해야합니까?
- 12. 각 하위 디렉토리에서 첫 번째 파일을 반환하십시오.
- 13. 디렉토리와 하위 디렉토리에 확장자가있는 파일을 찾으시겠습니까?
- 14. 주어진 디렉토리에서 디렉토리 경로가있는 모든 파일을 추출합니다.
- 15. diff가 하위 디렉토리와 작동하지 않습니다.
- 16. appcelerator 디렉토리에서 모든 파일을 검색
- 17. crtdbg.h 파일을 얻으려면 어떻게해야합니까?
- 18. 어떻게 파일을 Perl의 디렉토리와 구별합니까?
- 19. android.mk에있는 디렉토리와 하위 디렉토리에있는 모든 .cpp 파일의 FILE_LIST 만들기
- 20. PHP 하위 디렉토리에서 파일을 삭제 하시겠습니까?
- 21. 하위 디렉토리에서 htaccess 파일을 무시할 수 있습니까?
- 22. Mathematica에서리스트의 모든 파티션을 얻으려면 어떻게해야합니까?
- 23. 모든 카메라 목록을 얻으려면 어떻게해야합니까?
- 24. 프로토콜에서 모든 메소드를 얻으려면 어떻게해야합니까?
- 25. 디렉토리에서 특정 파일을 읽으려면 어떻게해야합니까? - abap
- 26. .JAR의 하위 디렉토리에서 _directly_ 하위 디렉토리의 파일을 가져 오는 방법
- 27. 디렉토리가 하위 디렉토리와 동기화되어 무시됩니다.
- 28. 하위 디렉토리에서 Drupal 이동
- 29. 디렉토리에서 루비를 사용하여 파일을 반복적으로 실행
- 30. .htaccess는 모든 디렉토리와 하위 도메인을 http://domain.com/으로 리디렉션합니다.
내 이름을 -name으로 바꿔야합니까? – user1547531
아니요.'-name'은 이름으로 검색하라는 find 명령에 전달되는 옵션입니다. '.'는'현재 디렉토리'를 나타내므로 프로젝트 루트에서이 명령을 실행하거나'.'을 프로젝트 루트의 경로로 대체해야합니다. '* .c '는 이름이'anthing, .c'과 일치하는 파일을 의미합니다. 그래서 프로젝트가/foo/bar에 있고 .h 파일을 찾으려면 다음을 사용하십시오 :'find/foo/bar -name * .h' – jahroy
@ jahroy : Jahroy, 고맙습니다. 정확히 말하고 싶습니다. :) –