new выделяет объем памяти, необходимый для хранения запрашиваемого объекта / массива. В этом случае n чисел int.
Затем указатель сохранит адрес в этом блоке памяти.
Но будьте осторожны, этот выделенный блок памяти не будет освобожден, пока вы не скажите это, написав
delete [] array;
Я бы добавил в ваш сценарий изменение -
for file in *.csv; do
head -1 "$file" | grep -l -Z -E '.*?FindMyRegex' | xargs -0 -I{} mv {} /home/destination/folder;
done
gawk 'FNR==1{if([110]~/PATTERN/)
printf "mv %s %s\n",FILENAME, "/target";nextfile}' /path/*.csv
.*?FindMyRegex
.*?
не имеет никакого смысла, их можно удалить. Вышеуказанный однострочный awk (gawk) создаст для вас mv file target
командные строки. Вы можете проверить их, если они вас устраивают, направить вывод в |sh
, команды будут выполнены.
замените PATTERN
вашим шаблоном регулярных выражений, а /target
- реальным целевым каталогом.
В одной строке предполагается, что имена файлов не содержат специальных символов (пробел, т.е.), если это так, добавьте "
с к mv
cmd.
используя GNU awk для поиска имен файлов, передайте имена файлов в xargs
gawk -v pattern="myRegex" '
FNR == 1 {if ([110] ~ pattern) printf "%s\0", FILENAME; nextfile}
' *.csv | xargs -0 echo mv -t destination
Если все выглядит нормально, удалите «echo»