Подсчитать количество строк файлов, соответствующих шаблону

Вы можете сделать это с помощью петли 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?`
2
03.12.2021, 03:46
1 ответ

Возможно, самый простой способ — просто вызвать 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.

2
03.12.2021, 06:47

Теги

Похожие вопросы