根據以下值批量重命名(追加)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

我正在嘗試對大量電子報告(大約 80k 個不同大小的文件)進行排序,但我需要抓取該欄位來過濾掉我不需要的報告。在 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 {} +

相關內容