Поиск файлов в bash

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

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

Аватара пользователя
DsTr
Сообщения: 374
ОС: Arch x64

Поиск файлов в bash

Сообщение DsTr »

Мой скрипт основан на найденом в интернете алгоритме рекурсивного поиска файлов основывающийся на "for dir in `echo *`".Все бы хорошо - но файлы с пробелами он разделяет на несколько файлов...Пробовал такие хитрости как проверка на существование файлов и затем сложения последующих резильтатов,ставя между ними пробел до тех пор пока не получится существующий файл...Но потом понял,что фигня все это...

Я вот ище посмотрел "find",он ищет нормально - но как разложить результат поиска по строкам - не знаю...

Вобщем подскажите как искать файлы не смотря на пробелы..
JID:dstr@jabbus.org
Спасибо сказали:
Аватара пользователя
sash-kan
Администратор
Сообщения: 13939
Статус: oel ngati kameie
ОС: GNU

Re: Поиск файлов в bash

Сообщение sash-kan »

DsTr писал(а):
28.08.2007 20:18
разложить результат поиска по строкам
это как?
Писать безграмотно - значит посягать на время людей, к которым мы адресуемся, а потому совершенно недопустимо в правильно организованном обществе. © Щерба Л. В., 1957
при сбоях форума см.блог
Спасибо сказали:
Аватара пользователя
slasher
Сообщения: 92
ОС: Arch

Re: Поиск файлов в bash

Сообщение slasher »

Может быть

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

for dir in "$(echo *)"

или

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

for dir in "`echo *`"

Смысел в кавычках

А лучше, наверно,

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

for dir in "`ls`"
Today would be a good day to DIE.
Спасибо сказали:
Аватара пользователя
Portnov
Модератор
Сообщения: 1786
Статус: Матёрый линуксоид
ОС: Debian testing/unstable

Re: Поиск файлов в bash

Сообщение Portnov »

ls * | while read FILE; do echo "File: $FILE"; done
Работа: Ubuntu 9.10
Дом: Debian testing/unstable и на всякий случай winxp в virtualbox.
Для разнообразия: моя домашняя страница -http://iportnov.ru
Спасибо сказали:
Аватара пользователя
slasher
Сообщения: 92
ОС: Arch

Re: Поиск файлов в bash

Сообщение slasher »

Проверил, работает вариант с ls.
Today would be a good day to DIE.
Спасибо сказали:
Аватара пользователя
diesel
Бывший модератор
Сообщения: 5989
ОС: OS X, openSuSE, ROSA, Debian

Re: Поиск файлов в bash

Сообщение diesel »

for dir in "$(ls)"; do echo "$dir"; done
вот так тоже работает, все-равно интересно чем find неугодил. :)

ЗЫ: пардон, так не работает :)
Спасибо сказали:
Аватара пользователя
slasher
Сообщения: 92
ОС: Arch

Re: Поиск файлов в bash

Сообщение slasher »

diesel писал(а):
28.08.2007 20:44
for dir in "$(ls)"; do echo "$dir"; done
вот так тоже работает, все-равно интересно чем find неугодил. :)

ЗЫ: пардон, так не работает :)

Почему не работает? Пробелы обрабатываются корректно.
Today would be a good day to DIE.
Спасибо сказали:
Аватара пользователя
DsTr
Сообщения: 374
ОС: Arch x64

Re: Поиск файлов в bash

Сообщение DsTr »

Надо чтоб в строке был один путь...А как разделить вывод файнд по строкам - хз..


slasher,
В ковычках - вообще один раз цикл проходит,походу for всего-лишь разделяет строку на несколько через пробелыю,так что for - отменяется..Надо думать нащет find'а,покажите на примере как им пользоваться...
JID:dstr@jabbus.org
Спасибо сказали:
Аватара пользователя
slasher
Сообщения: 92
ОС: Arch

Re: Поиск файлов в bash

Сообщение slasher »

Так ведь find и так выводит в одной строке один путь, а вот echo * все одной строкой выводит
Today would be a good day to DIE.
Спасибо сказали:
Аватара пользователя
diesel
Бывший модератор
Сообщения: 5989
ОС: OS X, openSuSE, ROSA, Debian

Re: Поиск файлов в bash

Сообщение diesel »

slasher писал(а):
28.08.2007 20:49
diesel писал(а):
28.08.2007 20:44
for dir in "$(ls)"; do echo "$dir"; done
вот так тоже работает, все-равно интересно чем find неугодил. :)

ЗЫ: пардон, так не работает :)

Почему не работает? Пробелы обрабатываются корректно.

угу, только получается $dir как одна большая переменная ... это тоже самое что написать:
dir="$(ls)";
echo $dir;
попробуй:
for dir in "$(ls)"; do echo \"$dir\"; done
например, и посмотри что будет взято в кавычки ...
Спасибо сказали:
Аватара пользователя
slasher
Сообщения: 92
ОС: Arch

Re: Поиск файлов в bash

Сообщение slasher »

Тогда может стоит писать

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

for dir in ./*; do echo "$dir"; done
Today would be a good day to DIE.
Спасибо сказали:
Аватара пользователя
diesel
Бывший модератор
Сообщения: 5989
ОС: OS X, openSuSE, ROSA, Debian

Re: Поиск файлов в bash

Сообщение diesel »

slasher писал(а):
28.08.2007 20:57
Тогда может стоит писать

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

for dir in ./*; do echo "$dir"; done

да, так похоже работает. я предпочитаю способ про который Portnov сказал, или find, тут где-то был уже топик где обсуждали эту проблему.... че-то ссылка не находится :(
Спасибо сказали:
Аватара пользователя
DsTr
Сообщения: 374
ОС: Arch x64

Re: Поиск файлов в bash

Сообщение DsTr »

slasher,
Ба-а-а-лин,мне нужен ЦИКЛ который будет искать файлы рекурсивно и в пихать строку путь к ОДНОМУ файлу,и таким образом - все файлы "обработать"...
JID:dstr@jabbus.org
Спасибо сказали:
Аватара пользователя
diesel
Бывший модератор
Сообщения: 5989
ОС: OS X, openSuSE, ROSA, Debian

Re: Поиск файлов в bash

Сообщение diesel »

DsTr писал(а):
28.08.2007 21:01
slasher,
Ба-а-а-лин,мне нужен ЦИКЛ который будет искать файлы рекурсивно и в пихать строку путь к ОДНОМУ файлу,и таким образом - все файлы "обработать"...

да блин ....
find -exec ls -l {} \;

find |while read i; do
do smth
done

ну и еще можно несколько вариантов
Спасибо сказали:
Аватара пользователя
DsTr
Сообщения: 374
ОС: Arch x64

Re: Поиск файлов в bash

Сообщение DsTr »

diesel, Оп!За второй вариан лютый фанкз,можно закрывать тему,спасиба всем!
JID:dstr@jabbus.org
Спасибо сказали:
Аватара пользователя
slasher
Сообщения: 92
ОС: Arch

Re: Поиск файлов в bash

Сообщение slasher »

DsTr писал(а):
28.08.2007 21:01
slasher,
Ба-а-а-лин,мне нужен ЦИКЛ который будет искать файлы рекурсивно и в пихать строку путь к ОДНОМУ файлу,и таким образом - все файлы "обработать"...

"Образец" цикла Вы сами предложили, так что...
Тем более даже из моего цикла можно сделать, то, что Вам надо (но не надо, find гораздо лучше)
Today would be a good day to DIE.
Спасибо сказали:
Аватара пользователя
sash-kan
Администратор
Сообщения: 13939
Статус: oel ngati kameie
ОС: GNU

Re: Поиск файлов в bash

Сообщение sash-kan »

diesel писал(а):
28.08.2007 21:06
find |while read i; do
do smth
done
разве с xargs не элегантнее?
Писать безграмотно - значит посягать на время людей, к которым мы адресуемся, а потому совершенно недопустимо в правильно организованном обществе. © Щерба Л. В., 1957
при сбоях форума см.блог
Спасибо сказали:
Аватара пользователя
diesel
Бывший модератор
Сообщения: 5989
ОС: OS X, openSuSE, ROSA, Debian

Re: Поиск файлов в bash

Сообщение diesel »

sash-kan писал(а):
28.08.2007 21:42
diesel писал(а):
28.08.2007 21:06
find |while read i; do
do smth
done
разве с xargs не элегантнее?

да, возможно. хотя .... подобный цикл приходит в голову когда надо несколько действий проделать с найденным .... я с xargs такого не умею :)
Спасибо сказали:
Аватара пользователя
sash-kan
Администратор
Сообщения: 13939
Статус: oel ngati kameie
ОС: GNU

Re: Поиск файлов в bash

Сообщение sash-kan »

Shell

$ find /etc/groff/ |xargs -I xx echo xx1 xx2 xx3 /etc/groff/1 /etc/groff/2 /etc/groff/3 /etc/groff/mdoc.local1 /etc/groff/mdoc.local2 /etc/groff/mdoc.local3 /etc/groff/man.local1 /etc/groff/man.local2 /etc/groff/man.local3
Писать безграмотно - значит посягать на время людей, к которым мы адресуемся, а потому совершенно недопустимо в правильно организованном обществе. © Щерба Л. В., 1957
при сбоях форума см.блог
Спасибо сказали:
Аватара пользователя
drBatty
Сообщения: 8735
Статус: GPG ID: 4DFBD1D6 дом горит, козёл не видит...
ОС: Slackware-current

Re: Поиск файлов в bash

Сообщение drBatty »

diesel писал(а):
28.08.2007 21:06
find -exec ls -l {} \;

find -ls

PS: diesel
вам похоже на работе клавиатуры выдают раз в месяц, судя по тому, что вы такие запутанные команды любите писать. ;) а у меня клавиатуры свои :(
http://emulek.blogspot.ru/ Windows Must Die
Учебник по sed зеркало в github

Скоро придёт
Осень
Спасибо сказали:
Аватара пользователя
ZyX
Сообщения: 355
ОС: Gentoo

Re: Поиск файлов в bash

Сообщение ZyX »

Aug 29 2007
Mar 6 2010

Это вы специально?
Спасибо сказали:
smaharbA
Сообщения: 229
ОС: Windows Vista

Re: Поиск файлов в bash

Сообщение smaharbA »

писатели абстагироваться не пробовали ?
что с вайло, что с фором, что с файдом...
Я конечно далек от мысли...(с)
Спасибо сказали:
Аватара пользователя
t.t
Бывший модератор
Сообщения: 7390
Статус: думающий о вечном
ОС: Debian, LMDE

Re: Поиск файлов в bash

Сообщение t.t »

smaharbA писал(а):
13.03.2010 00:28
писатели абстагироваться не пробовали ?
что с вайло, что с фором, что с файдом...
И что Вы хотели этим сказать?
¡иɯʎdʞ ин ʞɐʞ 'ɐнɔɐdʞǝdu qнεиж
Спасибо сказали:
Аватара пользователя
drBatty
Сообщения: 8735
Статус: GPG ID: 4DFBD1D6 дом горит, козёл не видит...
ОС: Slackware-current

Re: Поиск файлов в bash

Сообщение drBatty »

ZyX писал(а):
12.03.2010 23:11
Это вы специально?

а где вы эту тему уже раскрыли? давайте ссылку, типа "ха! я это уже написал 2 года назад!"
smaharbA писал(а):
13.03.2010 00:28
Mar 13 2010, в 02:28

писатели абстагироваться не пробовали ?
что с вайло, что с фором, что с файдом...

неплохой праздник, да? я тоже только отошёл ;)
http://emulek.blogspot.ru/ Windows Must Die
Учебник по sed зеркало в github

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