누락 된 C 코드를 찾는 방법 일부 소스 코드를 찾고 실제로 시스템의 한

나는 잘 문서화되지 않은 레거시 개발 시스템을 물려 받았으며 소스 코드가 아직 사용 가능한지 알 수 없습니다.

이제 일부 소스 코드를 찾고 실제로 시스템의 한 부분을 만들 수있었습니다.

나머지 소스 코드를 찾을 수 있는지, locate *.c파일을 수동으로 검사하는 것보다 더 좋은 방법이 있는지 궁금 합니다 (코드의 일부를 찾은 방법).

3 대의 머신이 있고 개발 머신 인 것으로 보이는 소스 코드를 찾은 곳은 한 곳뿐입니다. 또한 .deb프로젝트의 패키지 버전으로 보이는 61 개의 아카이브가 있지만 .deb아카이브를 살펴보면 소스가 아카이브에 없거나 적어도 내가 보았던 곳이 아님을 알 수 있습니다.

소스 코드를 찾기 위해 전체 드라이브를 “스캔”하는 좋은 방법이 있습니까?



답변

이것은 일반적인 질문에 대한 답변은 아니지만 특정 경우 시스템에 패키지가 있으므로 해당 소스 코드를 찾아 볼 가치가 있습니다.

find / -name \*.orig.tar\* -o -name \*.dsc

데비안 패키지 빌드 도구가 원하는 방식으로 이름이 지정된 소스 아카이브와 소스 패키지 제어 파일을 찾습니다. 찾은 파일 .debian.tar*이나 .diff.gz파일 을 찾으십시오 . 이러한 모든 파일을 결합하면 모든 패키지 메타 데이터와 함께 소스 코드와 빌드 규칙이 제공됩니다.

압축 해제 된 제어 파일을 찾을 수도 있습니다.

find / -name control

이들은 일반적으로 debian패키지 소스 의 서브 디렉토리에 있으며 소스에서 패키지를 재 빌드하는 데 필요한 모든 것이 포함되어 있습니다.


답변

나는 보통 소스 파일 작업을 위해 스크립트 조합을 사용합니다. 위의 답변으로 귀하의 경우를 정확하게 해결할 수는 없지만 심볼을 검색하면 소스 파일을 찾는 데 도움이 될 수 있습니다.

다음에 추가됩니다 bashrc:

function list-code-files() {
    find -type f \( \
        -name '*.cpp' -o \
        -name '*.java' -o \
        -name '*.php' -o \
        -name '*.[chS]' -o \
        -name 'Makefile' -o \
        -name '*.mk' \
        \) -print0
}

function csym() {
    list-code-files | xargs -0 grep -ne "$1"
}

그런 다음을 사용하여 소스 파일을 나열 list-code-files | xargs -0 echo하거나을 사용하여 기호를 검색 할 수 있습니다csym some-symbol-regexeg