Как переименовать файл CSV из значения в файле CSV - PullRequest
1 голос
/ 28 мая 2019

У меня 100 однострочных CSV-файлов.Файлы в настоящее время помечены AAA.txt, AAB.txt, ABB.txt (после того, как я использовал split -l 1 для них).Первое поле в каждом из этих файлов - это то, что я хочу переименовать, так что вместо AAA, AAB и ABB это будет первое значение.

Введите CSV (имя файла AAA.txt)

1234ABC, stuff, stuff

Требуемый вывод (имя файла 1234ABC.csv)

1234ABC, stuff, stuff

Я не хочу редактировать содержимое самого CSV, просто измените имя файла

Ответы [ 4 ]

1 голос
/ 28 мая 2019

что-то вроде этого должно работать:

for f in ./* ; do new_name=$(head -1 $f | cut -d, -f1); cp $f dir/$new_name

переместите их в новый каталог на случай, если что-то пойдет не так, или вам нужны оригинальные имена файлов.

1 голос
/ 28 мая 2019

начиная с исходного файла до разделения

$ awk -F, '{print > ($1".csv")}' originalFile.csv

и делайте все в одном кадре.

0 голосов
/ 28 мая 2019

В терминале измените каталог, например, cd /path/to/directory, в котором находятся файлы, и затем используйте следующую составную команду :

for f in *.txt; do echo mv -n "$f" "$(awk -F, '{print $1}' "$f").cvs"; done

Примечание: существует интенсиональный echo команда , с которой вы можете проверить, и она напечатает только команду mv , чтобы вы увидели, что это желаемый результат.Затем вы можете запустить его снова, удалив только echo из составной команды , чтобы фактически переименовать файлы по желанию с помощью команды mv .

0 голосов
/ 28 мая 2019

Это сохранит весь входной файл в colum1.csv входного файла.

awk -F, '{print $0 > $1".csv" }' aaa.txt
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...