вопрос по ls | grep
Модератор: Bizdelnick
-
agent-mega
- Сообщения: 505
- Статус: Автономный модуль
вопрос по ls | grep
Подскажите пожалуйста, какие параметры нужно указать grep-у в конструкции вида ls | grep, чтобы выводились только те файлы, которые были созданы в текущий день (сегодня) ?
Как я понял, ls подобной функцией не обладает.
Если это важно, то данная команда будет отдаваться ftp серверу в bash-скрипте.
Как я понял, ls подобной функцией не обладает.
Если это важно, то данная команда будет отдаваться ftp серверу в bash-скрипте.
DEBIAN & DEBIAN-BASED ONLY
Всё относительно. Объективности не существует.
Всё относительно. Объективности не существует.
-
ddc
- Бывший модератор
- Сообщения: 3535
- Статус: OpenBSD-compatible
- ОС: OpenBSD -current
Re: вопрос по ls | grep
Никаких. Точнее, надо указывать параметры 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
find -ctime 1
попробуй. Это выдаст файлы, созданные не позже чем 24 часа назад.
Еще можно с stat помутить.
Мдя.
ls -l | grep "Oct 16"
или какая там у тебя локаль...
Еще проще:
find -ctime 1 -daystart
попробуй. Это выдаст файлы, созданные не позже чем 24 часа назад.
Еще можно с stat помутить.
Мдя.
ls -l | grep "Oct 16"
или какая там у тебя локаль...
Еще проще:
find -ctime 1 -daystart
-
agent-mega
- Сообщения: 505
- Статус: Автономный модуль
Re: вопрос по ls | grep
Однозначно, чья-то чью-то не понимай.
FTP-сервер find не понимает. Мне нужно именно grep-ать полноценный вывод ls.
И зачем мне тогда скрипт, если мне нужно каждый раз руками вводить нужное число? (Это 2ddc тоже).
Локаль FTP-шника не знаю, но выводит даты на английском (Oct 16).
DEBIAN & DEBIAN-BASED ONLY
Всё относительно. Объективности не существует.
Всё относительно. Объективности не существует.
-
Bolverk
- Бывший модератор
- Сообщения: 1571
- ОС: Cygwin
Re: вопрос по ls | grep
У FTP вроде бы date есть.
-
agent-mega
- Сообщения: 505
- Статус: Автономный модуль
Re: вопрос по ls | grep
Додумался сам:
Может, у кого-то будут предложения по компактизации?
Код: Выделить всё
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
Команду date использовать не судьба? Её вроде тоже ftp должен понимать..И зачем мне тогда скрипт, если мне нужно каждый раз руками вводить нужное число?
¡иɯʎdʞ ин ʞɐʞ 'ɐнɔɐdʞǝdu qнεиж
-
agent-mega
- Сообщения: 505
- Статус: Автономный модуль
Re: вопрос по ls | grep
Правда? Ну попробуй(-те) тогда, прежде чем говорить "вроде"... А ещё попробуй(-те) там grep запустить... или cut... или использовать нормальное перенаправление вывода... Удачи.
DEBIAN & DEBIAN-BASED ONLY
Всё относительно. Объективности не существует.
Всё относительно. Объективности не существует.
-
elide
- Бывший модератор
- Сообщения: 2421
- Статус: Übermensch
- ОС: лялих
Re: вопрос по ls | grep
Код: Выделить всё
#!/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
agent-mega писал(а): ↑16.10.2005 22:12
Правда? Ну попробуй(-те) тогда, прежде чем говорить "вроде"... А ещё попробуй(-те) там grep запустить... или cut... или использовать нормальное перенаправление вывода... Удачи.
некорректная постановка вопроса (граничащая с демонстративной невежливостью): это Ваша задача, вот Вы и пробуйте
мне, например, глубоко до фонаря, чего ftp-сервер понимает, а чего - нет
-
agent-mega
- Сообщения: 505
- Статус: Автономный модуль
Re: вопрос по ls | grep
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
2agent-mega
суть некорректности - предложение пробовать то, что нужно Вам, - от этого не меняется
суть некорректности - предложение пробовать то, что нужно Вам, - от этого не меняется
-
agent-mega
- Сообщения: 505
- Статус: Автономный модуль
Re: вопрос по ls | grep
Следующий вопрос к знатокам:
В некой директории есть некие файлы с именами вида file.A, где A - число от 1 до, скажем, 13.
Имеется некая конструкция:
(Не спрашивайте, зачем именно такая и так далее, пожалуйста).
В итоге выводятся по порядку все эти эти файлы - но файлы file11, file12 и file13 выводятся по два раза - первый раз, когда $A = 1, а второй раз - когда $A = 11, $A = 12, $A = 13. Надеюсь понятно, почему.
Вопрос: как избавиться от этих дубликатов в выводе c помощью ключей grep? Или же каким-либо другим, желательно не очень кривым способом.
В некой директории есть некие файлы с именами вида 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
for A in `seq 1 13`
file.${A}$
?
А вообще я предпочитаю 01,02,...,nn
file.${A}$
?
А вообще я предпочитаю 01,02,...,nn
-
agent-mega
- Сообщения: 505
- Статус: Автономный модуль
Re: вопрос по ls | grep
Спасибо, попробую.
Ха, а вот дело как раз-таки в том, что эти файлы создаю не я и повлиять на принципы их именования я не могу.
------------------
Большое спасибо, помогло.
За `seq a b` кстати, тоже
Ха, а вот дело как раз-таки в том, что эти файлы создаю не я и повлиять на принципы их именования я не могу.
------------------
Большое спасибо, помогло.
За `seq a b` кстати, тоже
DEBIAN & DEBIAN-BASED ONLY
Всё относительно. Объективности не существует.
Всё относительно. Объективности не существует.
-
agent-mega
- Сообщения: 505
- Статус: Автономный модуль
Re: вопрос по ls | grep
А вот ещё вопросик:
Как лучше конечный вывод многострочной последовательности команд записать в переменную?
Последовательность типа:
(короче, как elide предложил)
------------
Сам разобрался:
Как лучше конечный вывод многострочной последовательности команд записать в переменную?
Последовательность типа:
Код: Выделить всё
(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
Уважаемый купи книжку "Основные команды Linux", сам ее пользую занимательная книжка, почти теже маны только на русском и с примерами и оъяснено все доходчиво.
WorkStation Ubuntu 10.10 on Fujitsu-Siemens Amilo Pro 3545
-
t.t
- Бывший модератор
- Сообщения: 7390
- Статус: думающий о вечном
- ОС: Debian, LMDE
Re: вопрос по ls | grep
Я бы посоветовал лучше почитать Advanced bash scripting guide -- сслыка на русский перевод легко ищется по этой фразе на этом форуме.Уважаемый купи книжку "Основные команды Linux"
¡иɯʎdʞ ин ʞɐʞ 'ɐнɔɐdʞǝdu qнεиж
-
agent-mega
- Сообщения: 505
- Статус: Автономный модуль
Re: вопрос по ls | grep
Advanced bash scripting guide
Именно по этой замечательной доке я всё и делаю. К сожалению, портит впечатление не совсем внятное деление на разделы.
DEBIAN & DEBIAN-BASED ONLY
Всё относительно. Объективности не существует.
Всё относительно. Объективности не существует.
-
agent-mega
- Сообщения: 505
- Статус: Автономный модуль
Re: вопрос по ls | grep
Следующий вопрос:
Как обработать строку чтобы вывести символы начиная, скажем, с 5-го по тот, после которого стоит пробел (не включая этот пробел), причём счёт символов должен идти _справа налево_
Я голову сломаю, подскажите, пожалуйста
Например в случае такой строки:
12312 4546 385750980
Нужно вывести 38575.
Как обработать строку чтобы вывести символы начиная, скажем, с 5-го по тот, после которого стоит пробел (не включая этот пробел), причём счёт символов должен идти _справа налево_
Я голову сломаю, подскажите, пожалуйста
Например в случае такой строки:
12312 4546 385750980
Нужно вывести 38575.
DEBIAN & DEBIAN-BASED ONLY
Всё относительно. Объективности не существует.
Всё относительно. Объективности не существует.
-
elide
- Бывший модератор
- Сообщения: 2421
- Статус: Übermensch
- ОС: лялих
Re: вопрос по ls | grep
Код: Выделить всё
echo '12312 4546 385750980' | grep -Po '(?<= )\d{5}'man perlre
слава роботам!
-
agent-mega
- Сообщения: 505
- Статус: Автономный модуль
Re: вопрос по ls | grep
Код: Выделить всё
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
man cut
-
elide
- Бывший модератор
- Сообщения: 2421
- Статус: Übermensch
- ОС: лялих
Re: вопрос по ls | grep
Код: Выделить всё
echo '12312 4546 385750980' | perl -nle 'print $1 if /(?<= )(\d{5})/'слава роботам!
-
agent-mega
- Сообщения: 505
- Статус: Автономный модуль
Re: вопрос по ls | grep
cut пробовал в первую очередь, слишком проста она: читает только слева направо и, если вы намекаете на -f , то там разделитель филдсов должен чётко указываться - например, пробел, а мне это не подходит, у меня может быть и два пробела. Причём это абсолютно неизвестно. В таком случае cut всё перекурочит. Единственное что не изменится - что нужны байты с n-ного по тот (ближайший), после которого стоит пробел, читая справа налево.
DEBIAN & DEBIAN-BASED ONLY
Всё относительно. Объективности не существует.
Всё относительно. Объективности не существует.
-
t.t
- Бывший модератор
- Сообщения: 7390
- Статус: думающий о вечном
- ОС: Debian, LMDE
Re: вопрос по ls | grep
Кстати, а что вот это за фигня, кто-нибудь знает? Конкретно я про что: в man grep этот ключ описан, а сам греп на него вот так ругается. Почему так?anton@kubuntu:~$ echo '12312 4546 385750980' | grep -Po '(?<= )\d{5}'
grep: Ключ -P не поддерживается
¡иɯʎdʞ ин ʞɐʞ 'ɐнɔɐdʞǝdu qнεиж
-
elide
- Бывший модератор
- Сообщения: 2421
- Статус: Übermensch
- ОС: лялих
Re: вопрос по ls | grep
патамушта (:
у меня GNU Grep 2.5 - работает. к сожалению, в самом мане не написано, для какой он версии, так что остается только гадать....
у меня GNU Grep 2.5 - работает. к сожалению, в самом мане не написано, для какой он версии, так что остается только гадать....
слава роботам!
-
Bolverk
- Бывший модератор
- Сообщения: 1571
- ОС: Cygwin
-
t.t
- Бывший модератор
- Сообщения: 7390
- Статус: думающий о вечном
- ОС: Debian, LMDE
Re: вопрос по ls | grep
патамушта (:
у меня GNU Grep 2.5 - работает. к сожалению, в самом мане не написано, для какой он версии, так что остается только гадать....
Код: Выделить всё
t:~$ grep --version
grep (GNU grep) 2.5.1Свинство это, вот и всё
¡иɯʎdʞ ин ʞɐʞ 'ɐнɔɐdʞǝdu qнεиж
-
Jan2ary
- Бывший модератор
- Сообщения: 630
- Статус: Тщедушный очкарик
Re: вопрос по ls | grep
Я бы так пробовал
echo '12312 4546 385750980' | awk '{print substr($NF, 0 ,5)}'
echo '12312 4546 385750980' | awk '{print substr($NF, 0 ,5)}'
Не шалю, никого не трогаю, починяю примус...