내의 값을 기반으로 CSV 파일 대량 이름 바꾸기(추가)

내의 값을 기반으로 CSV 파일 대량 이름 바꾸기(추가)

각각의 값을 기반으로 폴더에 있는 CSV 파일 배치의 이름을 바꾸는 방법이 있습니까? 두 번째 행의 첫 번째 값을 가져와 왼쪽 끝에 추가하고 싶습니다. 예를 들어:

파일 이름: 20160101-2015-12-01-20-45-1034581.csv

내용물:

HDR,FEC,8.1,FEC Webforms,8.1.0.0,
F1N,C00593228,,JOSH LAROSE SENATORIAL VICTORY SUPER PAC

새 파일 이름에는 대시가 있고 끝에 "F1N"이 추가됩니다.

새 파일 이름: 20160101-2015-12-01-20-45-1034581-F1N.csv

수많은 전자 보고서(다양한 크기의 약 80,000개 파일)를 정렬하려고 하는데, 필요하지 않은 항목을 필터링하려면 해당 필드를 가져와야 합니다. Mac에서 작업 중입니다.

감사해요!

답변1

다음은 하나의 파일에 대해 이를 수행하는 스크립트입니다.

#!/bin/sh
set -e

oldname=$1

# create file
printf '%s\n%s\n' \
       'HDR,FEC,8.1,FEC Webforms,8.1.0.0,' \
       'F1N,C00593228,,JOSH LAROSE SENATORIAL VICTORY SUPER PAC' \
       > "$oldname"

# get that "first" value: 
value=$(awk -F, 'NR == 2 {print $1; exit 0}' $oldname)

# insert it into the old name
newname=$(echo $oldname | sed 's/\.csv$/'"-$value&/")

# rename the file
mv $oldname $newname

# show your work ;-)
ls -l $newname
head $newname

테스트 1 2 3:

$ ./rename foo.csv
-rw-r--r--  1 jklowden  staff  90 Nov 22 20:33 foo-F1N.csv
HDR,FEC,8.1,FEC Webforms,8.1.0.0,
F1N,C00593228,,JOSH LAROSE SENATORIAL VICTORY SUPER PAC

루프로 수정하거나 주위에 루프를 작성할 수 있습니다. 개인적으로는 다음부터 실행하겠습니다.찾다(1) 와 같이

$ find ~/my/csv/files/ -exec ./rename {} +

관련 정보