파일 목록에서 파일 이름과 함께 헤더 추출

파일 목록에서 파일 이름과 함께 헤더 추출

나는 주어진 디렉토리에 있는 파일 목록에서 헤더와 파일 이름을 추출할 수 있는 쉘 스크립트를 작성하려고 합니다.

예를 들어 ABC_TESTFILE1.csv다음과 같은 제목을 포함합니다 .

C1,C2,C3

ABC_TESTFILE2.csv이런 제목이 들어있어요

C1,C4,C5

출력 텍스트 파일을 다음과 같이 만들고 싶습니다.

ABC_TESTFILE1,C1,C2,C3
ABC_TESTFILE2,C1,C4,C5

나는 다음과 같이 행운을 시험하고 있습니다.

#!/bin/bash

# Go to where the files are located
filedir=/home/vikrant_singh_rana/AAA_USP/Combined-Files/*

for filepath in $filedir
do
 #echo "Processing $filename"
 # do something on $f
 var_head=$(head -n 1 basename "$filepath" )
 echo "$var_head"
done; > test.txt

답변1

AWK 사용:

awk 'NR==1 {print FILENAME "," $0}' *.csv

.csv확장자가 최소한 한 줄을 포함하는 모든 파일을 나열합니다. 여기서 첫 번째 줄은 첫 번째 줄입니다.

답변2

printf및 를 사용하여 출력 형식을 지정할 수 있습니다 .basenamehead

for file in /home/vikrant_singh_rana/AAA_USP/Combined-Files/*.csv; do
  printf '%s,%s\n' "$(basename "$file" ".csv")" "$(head -n1 "$file")"
done >test.txt

답변3

path=(`ls -d /tmp/*.csv`)
        for file in "${path[@]}"; do
            head_line=`head -n1 $file`
            file_no_extension=`basename $file | sed 's/\..*//'`
            echo "$file_no_extension""$head_line"
        done

경로가 배열인지 확인하세요.

[root@mole tmp]# set | grep ^path=
path=([0]="/tmp/ABC_TESTFILE1.csv" [1]="/tmp/ABC_TESTFILE2.csv")

관련 정보