나는 잘 문서화되지 않은 레거시 개발 시스템을 물려 받았으며 소스 코드가 아직 사용 가능한지 알 수 없습니다.
이제 일부 소스 코드를 찾고 실제로 시스템의 한 부분을 만들 수있었습니다.
나머지 소스 코드를 찾을 수 있는지, 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