Проверьте несколько файлов со строкой

Ошибка заключается в том, что вы перенаправляете все выходные данные в $ logfile , поэтому нет вывода для YAD для обработки. Инструмент, который вы ищете - это : :

NAME
       tee - read from standard input and write to standard output and files

SYNOPSIS
       tee [OPTION]... [FILE]...

DESCRIPTION
       Copy standard input to each FILE, and also to standard output.

Итак, вы можете сделать:

apt-get update 2>&1 | tee -a ${logfile} |
  yad --width=400 --height=300 \
    --title="Updating debian package list ..." --progress \
    --pulsate --text="Updating debian package list ..." \
    --auto-kill --auto-close \
    --percentage=10 
-2
04.07.2014, 10:27
2 ответа
for f in *.csv; do
  IFS= read -r line < "$f" &&
    case $line in (*HEADER*) continue; esac

  printf >&2 'ERROR: Missing HEADER record for "%s"\n' "$f"
  mv -- "$f" "${f%.*}.head"
done
3
28.01.2020, 05:15

Попробуйте:

for _file in *.csv
do
    if ! grep -q 'HEADER' <(head -n 1 -- "$_file")
    then
        echo >&2 "ERROR: Missing HEADER record for $_file"
        # mv -- "$_file" "${_file%.*}.head"
        echo "$_file" "${_file%.*}.head"
    fi
done

Используя echo строку, чтобы проверить, работает ли она правильно, если все в порядке, попробуйте mv строку.

1
28.01.2020, 05:15

Теги

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