читать каждую строку: в реальном времени или сразу?

Вы можете попробовать следующее:

mkdir -p "DESTDIR"
for i in *.zip ; do
         unzip "$i" "THEFILE" -d "DESTDIR"
         mv "DESTDIR/THEFILE" "DESTDIR/$(basename "$i" .zip)_THEFILE"
done

Замените DESTDIR на путь назначения. И THEFILE с именем файла в каждом ZIP-файле, который вы хотите извлечь. Файлы переименовываются в соответствии с именем файла ZIP-файла.

2
11.03.2018, 08:45
1 ответ

Кажется, он читает по одной строке вместо того, чтобы сразу считывать весь файл в память. Я провел для вас небольшой тест:

Создайте файл, содержащий 3 строки:

$ echo -e "Line 1\nLine 2\nLine 3" >> teslines.txt
$ cat testlines.txt
Line 1
Line 2
Line 3

Создайте этот небольшой скрипт:

#!/bin/bash

while read LINE; do
    echo "$LINE"
    sleep 2
done < testlines.txt

Запустите скрипт и начните добавлять новые строки:

$./readlinetest.sh
Line 1

# Somewhere around here i started adding more lines to the file:
$ echo "Line 4" >> testlines.txt
$ echo "Line 5" >> testlines.txt
$ echo "Line 6" >> testlines.txt
$ echo "Line 7" >> testlines.txt

# Output continued:
Line 2
Line 3
Line 4
Line 5
Line 6
Line 7

Это работает примерно так же, как tail -fзапускалось на каком-то живом логе.

1
27.01.2020, 22:18

Теги

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