Вы можете сделать это с помощью петли while read
вот так:
while read -r col1 col2 col3 col4 trash; do
something with "$col1"
something with "$col2"
something with "$col3"
something with "$col4"
done < /path/to/quaternary_splitted.csv
Это прочитает каждую строку quaternary_splitted.csv
и установит первый столбец в col1
, второй столбец в col2
и т. д.
Параметр trash
используется для обнаружения всего нежелательного в вашем файле. Скажем, у вас была строка:Nb Ta Cr W what is this doing here?
. Без хлама вы бы получили:
col1=Nb
col2=Ta
col3=Cr
col4='W what is this doing here?`
Возможно, самый простой способ — просто вызвать wc -l
для каждого файла, а затем объединить этот вывод с выводом предиката -ls
. Следующее делает это с использованием paste
, и поскольку я вызываю wc
перед использованием -ls
, вывод wc
будет в первом столбце:
find 2021.12.*/ -maxdepth 2 -name 'myfilepattern.csv' \
-exec wc -l {} \; \
-ls |
paste - -
Чтобы избежать получения пути к файлу в выводе wc
, вам придется перенаправить файл в wc
, а не передавать его в командной строке утилиты. Чтобы сделать это с -exec
в find
, нам нужно вызвать оболочку:
find 2021.12.*/ -maxdepth 2 -name 'myfilepattern.csv' \
-exec sh -c 'wc -l <"$1"' sh {} \; \
-ls |
paste - -
Поменяйте местами -exec
и -ls
, если хотите получить количество строк в конце вывода -ls
.