본문 바로가기

디자인을 로딩할때 파일 리스트를 하나 만들어 두면 편하다.

여러 폴더로 막 나누어서 관리하면 리스트를 뽑아 내려고 계속 ls 해서 텍스트 추출해서 정리하고 쉽지 않다.

간단하게 *.v 파일을 찾아서 파일리스트 텍스트 파일로 만들어 주는 명령어 셋을 소개

find /path/to/top/directory -name "*.v" > filelist.f

결과는 아래처럼 이렇게 파일 목록이 filelist.f 로 저장된다.

RTL/SYSREG/CL\_3.src.v  
RTL/SYSREG/CL\_3.v  
RTL/SYSREG/REG0.v  
RTL/SYSREG/REG1.v  
RTL/SYSREG/REG2.v  
RTL/SYSREG/REG3.v

혹시나 ls 에서 파일명만 뽑아 내고 싶다면,
명령어 출력에서 파일 이름만을 뽑아내기 위해 awk 명령어를 사용할 수 있습니다. 예를 들어, 다음과 같이 사용할 수 있습니다:

ls -al | awk '{print $9}'

이 명령어는 ls -al의 결과에서 각 줄의 아홉 번째 필드(일반적으로 파일명을 나타냄)를 출력합니다. 추가적인 옵션을 사용하여 더 복잡한 조건의 파일명을 추출할 수도 있습니다.

복수개의 확장자 파일 리스트 만들기

만약 여러 확장자의 파일을 찾아 하나의 파일 리스트로 만들고 싶다면, find 명령어를 조금 더 확장하여 사용할 수 있습니다. 다음과 같은 방법으로 .v.sv 확장자를 가진 파일을 찾아 리스트를 만들 수 있습니다:

find /path/to/top/directory \( -name "*.v" -o -name "*.sv" \) > filelist.f

이 명령어는 주어진 경로 및 그 하위 디렉토리에서 .v.sv 확장자를 가진 파일을 찾아 filelist.f 파일에 저장합니다. -o 옵션은 OR 조건을 나타내어 두 조건 중 하나라도 만족하는 파일을 찾습니다. 이렇게 생성된 filelist.f 파일은 시뮬레이션 및 검증 도구에서 사용할 수 있는 입력 파일로 활용될 수 있습니다.

bash 스크립트 만들기

파일리스트를 생성해 주는 Bash 스크립트를 구성해봤다. ChatGPT 작품이다 당연하게도

사용법은 다음과 같다.
Usage: ./scriptname.sh /path/to/directory v sv vh
Where /path/to/directory is the directory to start searching
and v, sv, vh are the file extensions to search for.

#!/bin/bash

# Usage: ./scriptname.sh /path/to/directory v sv vh
# Where /path/to/directory is the directory to start searching
# and v, sv, vh are the file extensions to search for.

# Check if at least two arguments are provided (directory and at least one extension)
if [ $# -lt 2 ]; then
    echo "Error: Missing arguments."
    echo "Usage: $0 /path/to/directory extension1 [extension2 ...]"
    exit 1
fi

# 사용자가 지정한 디렉토리
target_directory=$1
# 파일 리스트를 저장할 파일 이름
output_file="filelist.f"
# 결과 파일 초기화
> "$output_file"

# 첫 번째 인자는 디렉토리로 사용하므로 확장자는 두 번째 인자부터 처리
shift

# 인자로 받은 확장자들에 대해 반복 실행
for ext in "$@"
do
    # 해당 확장자를 가진 파일을 찾아 임시 파일에 추가
    find "$target_directory" -name "*.$ext" >> "temp_$output_file"
done

# 임시 파일을 디렉토리별로 정렬하여 최종 파일에 저장
sort temp_$output_file > "$output_file"
rm temp_$output_file  # 임시 파일 삭제

echo "File list has been created and sorted in $output_file with the extensions provided."

이 스크립트 파일은 명령줄 인자를 받아 디렉토리 내에서 지정된 확장자를 가진 파일을 검색하고, 결과를 정렬하여 파일에 저장합니다. 사용 방법은 스크립트 상단의 주석에서 확인할 수 있습니다.

B로그0간

개발 관련 글과 유용한 정보를 공유하는 공간입니다.