각각의 값을 기반으로 폴더에 있는 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 {} +