Shell, текстовый файл

На самом деле это единственный раздел про unix на этом форуме

Модераторы: /dev/random, Модераторы разделов

Ответить
Michail1989
Сообщения: 1

Shell, текстовый файл

Сообщение Michail1989 »

Здравствуйте. Помогите, пожалуйста
Нужно из текстового файла выдрать все строчки, содержащие имена файлов с текущего каталога. Если можно - с пояснениями. Спасибо!
Спасибо сказали:
Kopilov
Сообщения: 949
ОС: [K]Ubuntu, Debian

Re: Shell, текстовый файл

Сообщение Kopilov »

Если в лоб, то так:

Код: Выделить всё

#обходим циклом содержимое каталога, очередной файл записываем в переменную filename
for filename in *
do
     #в файле somefile ищем строки, содержащие переменную $filename
    grep $filename somefile
done

-- но такой вариант будет перечитывать файл множество раз.
Более оптимальный пусть подскажут более крутые специалисты.
Спасибо сказали:
Аватара пользователя
drBatty
Сообщения: 8735
Статус: GPG ID: 4DFBD1D6 дом горит, козёл не видит...
ОС: Slackware-current
Контактная информация:

Re: Shell, текстовый файл

Сообщение drBatty »

Michail1989 писал(а):
21.01.2013 17:46
Нужно из текстового файла выдрать все строчки, содержащие имена файлов с текущего каталога. Если можно - с пояснениями. Спасибо!

Темы от студентов с запросами готовых решений по заданиям закрываются не глядя.

потому готовь $$ и велком в ЛС
http://emulek.blogspot.ru/ Windows Must Die
Учебник по sed зеркало в github

Скоро придёт
Осень
Спасибо сказали:
Kopilov
Сообщения: 949
ОС: [K]Ubuntu, Debian

Re: Shell, текстовый файл

Сообщение Kopilov »

У меня есть похожая задача, требующая оптимизации (не срочная и не учебная).
Есть "фотолента" и альбом, состоящий из симлинков на кадры, разбросанных по каталогам. Надо найти фотографии, не помещённые в альбом -- хотельсь бы сделать это, не пересматривая его каждый раз для каждого кадра.
Спасибо сказали:
Аватара пользователя
drBatty
Сообщения: 8735
Статус: GPG ID: 4DFBD1D6 дом горит, козёл не видит...
ОС: Slackware-current
Контактная информация:

Re: Shell, текстовый файл

Сообщение drBatty »

Kopilov писал(а):
21.01.2013 18:08
У меня есть похожая задача, требующая оптимизации (не срочная и не учебная).

если у вас есть не самый стары bash, то можно использовать ассоциативный массив.

т.е. используете имя как ключ (value тоже на что-то сгодится. Но можно просто YES туда писать). И для проверки достаточно просто посмотреть, есть такой эл-т или нет. Если это не очень большая БД, то работает. Ну а для больших - СУБД прикрутите.

ЗЫЖ в качестве ключа можно также использовать md5
http://emulek.blogspot.ru/ Windows Must Die
Учебник по sed зеркало в github

Скоро придёт
Осень
Спасибо сказали:
Ответить