누락 된 C 코드를 찾는 방법


9

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

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

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

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

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

답변:


9

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

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

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

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

find / -name control

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


1
또한 : find / -wholename '*/debian/rules'. 또는 (혼합기가 설치된 경우 더 빠름)locate -r /debian/rules$
cas

2
@cas 여기에서 안전하게 플레이하려고 노력하는데, 데비안 패키지를 만들기위한 매우 이상한 설정을 보았습니다. locate더 빠를 것이지만, 과거에 정리 된 복구 된 시스템에서 locate데이터베이스를 실행하는 데 실망했습니다 . (백업이 가능하다면 여전히 유용한 정보가 될 수 있습니다 ...)
Stephen Kitt

1
로가는 unix.stackexchange.com/questions/382857 ,이 데비안 패키지가 아니다.
JdeBP

1
@JdeBP 나는“ .deb패키지 버전의 프로젝트 인 것처럼 보이는 61 개의 아카이브를 가지고 있다”(sic).
Stephen Kitt

2
@DjDac 괜찮 find습니다. 파일 목록을 작성 /proc하는 시간과 파일을 읽는 시간 사이에 사라지는 파일을 읽으려고하면 find됩니다. /proc완전히 건너 뛸 수 있습니다 .
Stephen Kitt

1

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

다음에 추가됩니다 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

당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.