вопрос по ls | grep

Для новичков как вообще в Linux, так и в конкретной теме, к которой относится вопрос.

Модератор: Bizdelnick

Аватара пользователя
agent-mega
Сообщения: 505
Статус: Автономный модуль

вопрос по ls | grep

Сообщение agent-mega »

Подскажите пожалуйста, какие параметры нужно указать grep-у в конструкции вида ls | grep, чтобы выводились только те файлы, которые были созданы в текущий день (сегодня) ?
Как я понял, ls подобной функцией не обладает.
Если это важно, то данная команда будет отдаваться ftp серверу в bash-скрипте.
DEBIAN & DEBIAN-BASED ONLY

Всё относительно. Объективности не существует.
Спасибо сказали:
Аватара пользователя
ddc
Бывший модератор
Сообщения: 3535
Статус: OpenBSD-compatible
ОС: OpenBSD -current

Re: вопрос по ls | grep

Сообщение ddc »

Никаких. Точнее, надо указывать параметры ls.

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

ddc@czarkerlaptop ~ $ ls -l
итого 6863281
-rw-r--r--   1 ddc users          0 Окт 16 00:03 ???
-rwxr-xr-x   1 ddc users       8751 Окт  3 07:35 10things
-rwxr-xr-x   1 ddc users      10805 Окт  3 07:36 adresses.csv
-rw-r--r--   1 ddc users     116888 Окт 11 10:12 A_History_of_Apple's_Lisa,_1979-1986.war
-rwxr-xr-x   1 ddc users     973289 Окт  3 07:36 appb.pdf
-rwxr-xr-x   1 ddc users    7964335 Окт  3 07:37 cbook1_0a.pdf
drwxr-xr-x   3 ddc users        584 Окт 14 07:56 cdimages
-rwxr-xr-x   1 ddc users    7994508 Окт  3 07:37 chip-linux-01_2005.pdf
drwxr-xr-x   2 ddc users        152 Окт  5 15:58 CONS.CFG
-rw-r--r--   1 ddc users         74 Окт 13 13:48 CONS_ERR.TXT
drwxr-xr-x   3 ddc users        248 Окт 13 10:17 Copyright
drwx------   3 ddc users        304 Окт 16 19:07 Desktop
drwxr-xr-x   2 ddc users        208 Окт  5 14:29 eBooks
-rwxr-xr-x   1 ddc users     256524 Окт  3 07:39 gentle-introduction.dvi
-rw-r--r--   1 ddc users    1158706 Окт  2 16:30 ixbt-saver-install-1.1.zip
-rw-r--r--   1 ddc users 4294967296 Окт 13 14:57 linux
-rwxr-xr-x   1 ddc users     449013 Окт  3 13:22 Manual_MissionX710S.pdf
-rw-r--r--   1 ddc users     329687 Окт 13 09:54 Marvell-sk98lin-update.tar.bz2
drwxr-xr-x  13 ddc users        392 Окт  7 15:10 music
drwxr-xr-x   9 ddc users        288 Окт  3 19:50 MyMemos
-rw-r--r--   1 ddc users 1073741824 Окт 15 17:29 p9part
drwxr-xr-x   6 ddc users        832 Окт  5 15:51 pics
-rw-r--r--   1 ddc users     116821 Окт 14 11:24 print.pdf
-rw-r--r--   1 ddc users      31869 Окт 11 10:12 So Now I'm A Software Architect. What Do I Actually Do?.war
-rwxr-xr-x   1 ddc users   22192591 Окт  3 13:29 stage1-amd64-2005.1.tar.bz2
-rwxr-xr-x   1 ddc users      10805 Окт  3 13:33 topalm.csv
drwxr-xr-x   2 ddc users        120 Окт 11 12:44 UNIX Articles
drwxr-xr-x   6 ddc users        296 Окт  4 10:28 videos
-rw-r--r--   1 ddc users 1610612736 Окт 16 17:49 winxp
-rw-r--r--   1 ddc users       4776 Окт 16 14:59 xorg.conf.bz2
-rw-r--r--   1 ddc users       6017 Окт 16 16:45 xorg.cong.ati.bz
-rw-r--r--   1 ddc users      84446 Окт  6 13:56 Инст.дел-во.tar.bz2
drwxr-xr-x   4 ddc users        104 Окт  5 14:09 ИТ-ДВИЖЕНИЕ
-rwxr-xr-x   1 ddc users      67403 Окт  3 13:34 ОСАГО.html
-rwxr-xr-x   1 ddc users          9 Окт  3 07:46 пароль.txt
dr-xr-xr-x  20 ddc users       2632 Окт  6 16:12 Работа
drwxr-xr-x   6 ddc users        360 Окт  7 10:30 Учёба
ddc@czarkerlaptop ~ $ ls -l | grep "Окт 16"
-rw-r--r--   1 ddc users          0 Окт 16 00:03
drwx------   3 ddc users        304 Окт 16 19:07 Desktop
-rw-r--r--   1 ddc users 1610612736 Окт 16 17:49 winxp
-rw-r--r--   1 ddc users       4776 Окт 16 14:59 xorg.conf.bz2
-rw-r--r--   1 ddc users       6017 Окт 16 16:45 xorg.cong.ati.bz
Спасибо сказали:
Аватара пользователя
Bolverk
Бывший модератор
Сообщения: 1571
ОС: Cygwin

Re: вопрос по ls | grep

Сообщение Bolverk »

find -ctime 1
попробуй. Это выдаст файлы, созданные не позже чем 24 часа назад.
Еще можно с stat помутить.

Мдя.
ls -l | grep "Oct 16"
или какая там у тебя локаль...

Еще проще:
find -ctime 1 -daystart
Спасибо сказали:
Аватара пользователя
agent-mega
Сообщения: 505
Статус: Автономный модуль

Re: вопрос по ls | grep

Сообщение agent-mega »

ddc писал(а):
16.10.2005 19:17
Никаких. Точнее, надо указывать параметры ls.

Однозначно, чья-то чью-то не понимай.

Bolverk писал(а):
16.10.2005 19:25
find -ctime 1
попробуй. Это выдаст файлы, созданные не позже чем 24 часа назад.
Еще можно с stat помутить.

Мдя.
ls -l | grep "Oct 16"
или какая там у тебя локаль...

Еще проще:
find -ctime 1 -daystart

FTP-сервер find не понимает. Мне нужно именно grep-ать полноценный вывод ls.
И зачем мне тогда скрипт, если мне нужно каждый раз руками вводить нужное число? (Это 2ddc тоже).

Локаль FTP-шника не знаю, но выводит даты на английском (Oct 16).
DEBIAN & DEBIAN-BASED ONLY

Всё относительно. Объективности не существует.
Спасибо сказали:
Аватара пользователя
Bolverk
Бывший модератор
Сообщения: 1571
ОС: Cygwin

Re: вопрос по ls | grep

Сообщение Bolverk »

У FTP вроде бы date есть.
Спасибо сказали:
Аватара пользователя
agent-mega
Сообщения: 505
Статус: Автономный модуль

Re: вопрос по ls | grep

Сообщение agent-mega »

Додумался сам:

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

ftp -n 192.168.0.1 <<End-Of-Session
user admin parol
ls / result.txt
#Отправляем результат работы ls в локальный файл.
bye
End-Of-Session
#На этом моменте связь прерывается.
shablon=`LC_TIME="us_US.KOI8-R" date | cut -d" " -f,2,3`
#Здесь указываем локаль сервера для команды date и вырезаем из её вывода 2-й и 3-й блоки (месяц и число)
cat ./result.txt | grep "$shablon"
#Переменная $shablon в кавычках, чтобы не потерять пробелы, а то grep будет искать не Oct 16, а Oct16.
rm ./result.txt
#Ну это чтобы не засорять диск, файлик нам только временно нужен был.

Может, у кого-то будут предложения по компактизации? :)
DEBIAN & DEBIAN-BASED ONLY

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

Re: вопрос по ls | grep

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

И зачем мне тогда скрипт, если мне нужно каждый раз руками вводить нужное число?
Команду date использовать не судьба? Её вроде тоже ftp должен понимать..
¡иɯʎdʞ ин ʞɐʞ 'ɐнɔɐdʞǝdu qнεиж
Спасибо сказали:
Аватара пользователя
agent-mega
Сообщения: 505
Статус: Автономный модуль

Re: вопрос по ls | grep

Сообщение agent-mega »

t.t писал(а):
16.10.2005 21:52
И зачем мне тогда скрипт, если мне нужно каждый раз руками вводить нужное число?
Команду date использовать не судьба? Её вроде тоже ftp должен понимать..

Правда? Ну попробуй(-те) тогда, прежде чем говорить "вроде"... А ещё попробуй(-те) там grep запустить... или cut... или использовать нормальное перенаправление вывода... Удачи.
DEBIAN & DEBIAN-BASED ONLY

Всё относительно. Объективности не существует.
Спасибо сказали:
Аватара пользователя
elide
Бывший модератор
Сообщения: 2421
Статус: Übermensch
ОС: лялих

Re: вопрос по ls | grep

Сообщение elide »

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

#!/bin/sh
export LC_ALL=c
( ftp -n ftp.server.ru <<EOF
user USERNAME PASSWD
ls /
bye
EOF
) | egrep "`date '+%b *%-d'`"
у меня отлично работает.
слава роботам!
Спасибо сказали:
Аватара пользователя
alv
Бывший модератор
Сообщения: 7275
Статус: Пенсионер в законе
ОС: Cintu

Re: вопрос по ls | grep

Сообщение alv »

agent-mega писал(а):
16.10.2005 22:12
t.t писал(а):
16.10.2005 21:52

И зачем мне тогда скрипт, если мне нужно каждый раз руками вводить нужное число?
Команду date использовать не судьба? Её вроде тоже ftp должен понимать..

Правда? Ну попробуй(-те) тогда, прежде чем говорить "вроде"... А ещё попробуй(-те) там grep запустить... или cut... или использовать нормальное перенаправление вывода... Удачи.

некорректная постановка вопроса (граничащая с демонстративной невежливостью): это Ваша задача, вот Вы и пробуйте
мне, например, глубоко до фонаря, чего ftp-сервер понимает, а чего - нет
Спасибо сказали:
Аватара пользователя
agent-mega
Сообщения: 505
Статус: Автономный модуль

Re: вопрос по ls | grep

Сообщение agent-mega »

elide писал(а):
17.10.2005 03:26

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

#!/bin/sh
export LC_ALL=c
( ftp -n ftp.server.ru <<EOF
user USERNAME PASSWD
ls /
bye
EOF
) | egrep "`date '+%b *%-d'`"
у меня отлично работает.

А вот за скобочки спасибо. Не знал. И за параметры egrep спасибо.
некорректная постановка вопроса (граничащая с демонстративной невежливостью)

Вопросительное выражение "не судьба?" считаю не менее невежливым, некорректным и отражающим презрительно-хамское отношение к собеседнику.
DEBIAN & DEBIAN-BASED ONLY

Всё относительно. Объективности не существует.
Спасибо сказали:
Аватара пользователя
alv
Бывший модератор
Сообщения: 7275
Статус: Пенсионер в законе
ОС: Cintu

Re: вопрос по ls | grep

Сообщение alv »

2agent-mega
суть некорректности - предложение пробовать то, что нужно Вам, - от этого не меняется
Спасибо сказали:
Аватара пользователя
agent-mega
Сообщения: 505
Статус: Автономный модуль

Re: вопрос по ls | grep

Сообщение agent-mega »

Следующий вопрос к знатокам:
В некой директории есть некие файлы с именами вида file.A, где A - число от 1 до, скажем, 13.
Имеется некая конструкция:

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

for A in 1 2 3 4 5 6 7 8 9 10 11 12 13
do
ls | egrep "file.$A"
done

(Не спрашивайте, зачем именно такая и так далее, пожалуйста).

В итоге выводятся по порядку все эти эти файлы - но файлы file11, file12 и file13 выводятся по два раза - первый раз, когда $A = 1, а второй раз - когда $A = 11, $A = 12, $A = 13. Надеюсь понятно, почему.

Вопрос: как избавиться от этих дубликатов в выводе c помощью ключей grep? Или же каким-либо другим, желательно не очень кривым способом.
DEBIAN & DEBIAN-BASED ONLY

Всё относительно. Объективности не существует.
Спасибо сказали:
Аватара пользователя
Bolverk
Бывший модератор
Сообщения: 1571
ОС: Cygwin

Re: вопрос по ls | grep

Сообщение Bolverk »

for A in `seq 1 13`

file.${A}$
?
А вообще я предпочитаю 01,02,...,nn
Спасибо сказали:
Аватара пользователя
agent-mega
Сообщения: 505
Статус: Автономный модуль

Re: вопрос по ls | grep

Сообщение agent-mega »

Спасибо, попробую.

Ха, а вот дело как раз-таки в том, что эти файлы создаю не я и повлиять на принципы их именования я не могу.
------------------
Большое спасибо, помогло.
За `seq a b` кстати, тоже :)
DEBIAN & DEBIAN-BASED ONLY

Всё относительно. Объективности не существует.
Спасибо сказали:
Аватара пользователя
agent-mega
Сообщения: 505
Статус: Автономный модуль

Re: вопрос по ls | grep

Сообщение agent-mega »

А вот ещё вопросик:
Как лучше конечный вывод многострочной последовательности команд записать в переменную?

Последовательность типа:

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

(command 1
command 2
command 3) | command 4

(короче, как elide предложил)
------------
Сам разобрался:

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

A=`(command 1
command 2
command 3) | command 4`
DEBIAN & DEBIAN-BASED ONLY

Всё относительно. Объективности не существует.
Спасибо сказали:
Аватара пользователя
Angel_13th
Сообщения: 1164
Статус: ...-oo=ll=oo-...
ОС: Gentoo

Re: вопрос по ls | grep

Сообщение Angel_13th »

Уважаемый купи книжку "Основные команды Linux", сам ее пользую занимательная книжка, почти теже маны только на русском и с примерами и оъяснено все доходчиво.
WorkStation Ubuntu 10.10 on Fujitsu-Siemens Amilo Pro 3545
Спасибо сказали:
Аватара пользователя
t.t
Бывший модератор
Сообщения: 7390
Статус: думающий о вечном
ОС: Debian, LMDE

Re: вопрос по ls | grep

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

Уважаемый купи книжку "Основные команды Linux"
Я бы посоветовал лучше почитать Advanced bash scripting guide -- сслыка на русский перевод легко ищется по этой фразе на этом форуме.
¡иɯʎdʞ ин ʞɐʞ 'ɐнɔɐdʞǝdu qнεиж
Спасибо сказали:
Аватара пользователя
agent-mega
Сообщения: 505
Статус: Автономный модуль

Re: вопрос по ls | grep

Сообщение agent-mega »

Advanced bash scripting guide

Именно по этой замечательной доке я всё и делаю. К сожалению, портит впечатление не совсем внятное деление на разделы.
DEBIAN & DEBIAN-BASED ONLY

Всё относительно. Объективности не существует.
Спасибо сказали:
Аватара пользователя
agent-mega
Сообщения: 505
Статус: Автономный модуль

Re: вопрос по ls | grep

Сообщение agent-mega »

Следующий вопрос:
Как обработать строку чтобы вывести символы начиная, скажем, с 5-го по тот, после которого стоит пробел (не включая этот пробел), причём счёт символов должен идти _справа налево_
Я голову сломаю, подскажите, пожалуйста :)

Например в случае такой строки:
12312 4546 385750980
Нужно вывести 38575.
DEBIAN & DEBIAN-BASED ONLY

Всё относительно. Объективности не существует.
Спасибо сказали:
Аватара пользователя
elide
Бывший модератор
Сообщения: 2421
Статус: Übermensch
ОС: лялих

Re: вопрос по ls | grep

Сообщение elide »

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

echo '12312 4546 385750980' | grep -Po '(?<= )\d{5}'

man perlre
слава роботам!
Спасибо сказали:
Аватара пользователя
agent-mega
Сообщения: 505
Статус: Автономный модуль

Re: вопрос по ls | grep

Сообщение agent-mega »

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

anton@kubuntu:~$ echo '12312 4546 385750980' | grep -Po '(?<= )\d{5}'
grep: Ключ -P не поддерживается
anton@kubuntu:~$ echo '12312 4546 385750980' | egrep -Po '(?<= )\d{5}'
grep: заданы конфликтующие образцы
anton@kubuntu:~$
DEBIAN & DEBIAN-BASED ONLY

Всё относительно. Объективности не существует.
Спасибо сказали:
Аватара пользователя
Bolverk
Бывший модератор
Сообщения: 1571
ОС: Cygwin

Re: вопрос по ls | grep

Сообщение Bolverk »

man cut
Спасибо сказали:
Аватара пользователя
elide
Бывший модератор
Сообщения: 2421
Статус: Übermensch
ОС: лялих

Re: вопрос по ls | grep

Сообщение elide »

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

echo '12312 4546 385750980' | perl -nle 'print $1 if /(?<= )(\d{5})/'
кстати, Bolverk, может покажешь, как сделать это с помощью cut? уж больно интересно...
слава роботам!
Спасибо сказали:
Аватара пользователя
agent-mega
Сообщения: 505
Статус: Автономный модуль

Re: вопрос по ls | grep

Сообщение agent-mega »

cut пробовал в первую очередь, слишком проста она: читает только слева направо и, если вы намекаете на -f , то там разделитель филдсов должен чётко указываться - например, пробел, а мне это не подходит, у меня может быть и два пробела. Причём это абсолютно неизвестно. В таком случае cut всё перекурочит. Единственное что не изменится - что нужны байты с n-ного по тот (ближайший), после которого стоит пробел, читая справа налево.
DEBIAN & DEBIAN-BASED ONLY

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

Re: вопрос по ls | grep

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

anton@kubuntu:~$ echo '12312 4546 385750980' | grep -Po '(?<= )\d{5}'
grep: Ключ -P не поддерживается
Кстати, а что вот это за фигня, кто-нибудь знает? Конкретно я про что: в man grep этот ключ описан, а сам греп на него вот так ругается. Почему так?
¡иɯʎdʞ ин ʞɐʞ 'ɐнɔɐdʞǝdu qнεиж
Спасибо сказали:
Аватара пользователя
elide
Бывший модератор
Сообщения: 2421
Статус: Übermensch
ОС: лялих

Re: вопрос по ls | grep

Сообщение elide »

патамушта (:
у меня GNU Grep 2.5 - работает. к сожалению, в самом мане не написано, для какой он версии, так что остается только гадать....
слава роботам!
Спасибо сказали:
Аватара пользователя
Bolverk
Бывший модератор
Сообщения: 1571
ОС: Cygwin

Re: вопрос по ls | grep

Сообщение Bolverk »

elide писал(а):
30.10.2005 14:15
кстати, Bolverk, может покажешь, как сделать это с помощью cut? уж больно интересно...

Похоже, никак, невнимательно прочитал, pardon mij.
Спасибо сказали:
Аватара пользователя
t.t
Бывший модератор
Сообщения: 7390
Статус: думающий о вечном
ОС: Debian, LMDE

Re: вопрос по ls | grep

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

патамушта (:
у меня GNU Grep 2.5 - работает. к сожалению, в самом мане не написано, для какой он версии, так что остается только гадать....

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

t:~$ grep --version
grep (GNU grep) 2.5.1

Свинство это, вот и всё :)
¡иɯʎdʞ ин ʞɐʞ 'ɐнɔɐdʞǝdu qнεиж
Спасибо сказали:
Аватара пользователя
Jan2ary
Бывший модератор
Сообщения: 630
Статус: Тщедушный очкарик

Re: вопрос по ls | grep

Сообщение Jan2ary »

Я бы так пробовал

echo '12312 4546 385750980' | awk '{print substr($NF, 0 ,5)}'
Не шалю, никого не трогаю, починяю примус...
Спасибо сказали: