109: (Default)
[personal profile] 109
вот, потребовалось рекурсивно отсортировать файлы по времени создания. ну, я же знаю, что CLI is more powerful... минут пятнадцать убил, рассматривая и пробуя разные ключи ls. потом меня осенило, как это легко и просто делается в гуях.

(no subject)

Date: 2003-08-08 10:55 pm (UTC)
From: [identity profile] evolver.livejournal.com
Есть мнение, что каждому свое. Не имея опыта, трудно "to think out of the box" в любой предметной области, ведь верно? Вот ты, например, мастерски гуй ваять можешь, а для меня большего наказания (в профессиональном плане) не придумать, кроме как заставить гуй писать и доводить его до ума.

Ответ на твою сложную задачу:
ls -t `find . -type f`

Эта команда выведет тебе список файлов в текущем каталоге и всех его подкаталогах, поместив самый свежий из них в начало списка. Дальше можешь поиграть ключами ls по вкусу. Не rocket science, да? :)

(no subject)

Date: 2003-08-09 12:07 pm (UTC)
From: [identity profile] 109.livejournal.com
юниксоиды меня обычно поражают своей незатейливостью :-)

во-первых, твой "ответ" вообще не работает:

C:\>ls -t `find . -type f`
ls: invalid option -- y
Try `ls --help' for more information.

во-вторых, -t - это modification time, а мне надо - время создания.

в-третьих, это что - такая нетривиальная задача, что одной утилитой не сделать? я так полагаю, что следующим предложением будет на перле написать? :-)

(no subject)

Date: 2003-08-09 12:22 pm (UTC)
From: [identity profile] evolver.livejournal.com
Виндузятники поражают меня отсутствием предположений о том, что ls может существовать не только под cygwin и что это далеко не самая стандартная среда.

Во-первых, мой ответ работает на:

gw: /samsung/home/evolver $ uname -a
FreeBSD evolvah.dyndns.org 4.7-STABLE FreeBSD 4.7-STABLE #1: Tue Dec 10 14:38:42 CST 2002 root@dallas.evolver.spb.ru:/usr/obj/usr/src/sys/EVOLVER-4 i386
gw: /samsung/home/evolver $ bash --version
bash --version
GNU bash, version 2.04.0(1)-release (i386--freebsd4.2)
Copyright 1999 Free Software Foundation, Inc.

Я не стал бы постить свой ответ, не проверив.

Во-вторых, если ты внимательно изучишь "man stat", то никакого "времени создания" система не хранит. Про винду тебе самому должно быть виднее.

В-третьих, "do one thing, do it well" и "KISS principle" являются основой идеологии юниксовых утилит. Ты ее еще не понял, отсюда и не способность подумать в направлении, позволяющем решить задачу.

Ничего удивительного, короче.

(no subject)

Date: 2003-08-09 12:57 pm (UTC)
From: [identity profile] 109.livejournal.com
1. какой ещё cygwin?
2. какое мне дело, как оно работает на каких-то юниксах? мне-то надо на виндах. а ты даже не догадался спросить, про какую ос идёт речь, несмотря на многочисленные хинты, заложенные в вопросе.
3. про винду мне, разумеется, виднее. время создания, разумеется, хранит.
4. как выяснилось, даже one thing сделать well не получается.
5. насчёт того, что я чего-то там не понял - это ваши мечты.

(no subject)

Date: 2003-08-09 01:00 pm (UTC)
From: [identity profile] evolver.livejournal.com
Мне с самого начала твой вопрос напоминал задачу про резиновую, но абсолютно упругую бомбу. Спасибо, теперь я знаю, что не ошибался.

(no subject)

Date: 2003-08-09 01:34 pm (UTC)
From: [identity profile] 109.livejournal.com
ну конечно. ты перепутал время создания с временем модификации и винды с юниксом, а я виноват.

(no subject)

Date: 2003-08-09 05:41 pm (UTC)
From: [identity profile] evolver.livejournal.com
Я утверждаю, что в рамках поставленных условий мое решение дает желаемый результат. Ты можешь это оспорить? (см. пример, приведенный msh)

(no subject)

Date: 2003-08-09 09:59 pm (UTC)
From: [identity profile] 109.livejournal.com
мое решение дает желаемый результат

разумеется, нет. мне нужно отсортировать по времени создания, а не по времени модификации.

(no subject)

Date: 2003-08-09 10:13 pm (UTC)
From: [identity profile] evolver.livejournal.com
Ты представляешь, как работает команда "touch" вне пределов того, что говорит "touch --help" в некоем UnixUtils? Если да, то объясни, почему пример msh не соответствует твоей исходной постановке задачи. Можешь?

(no subject)

Date: 2003-08-09 10:24 pm (UTC)
From: [identity profile] 109.livejournal.com
touch: 1. меняет время модификации файла и 2. к задаче вообще не имеет отношения.

(no subject)

Date: 2003-08-09 01:04 pm (UTC)
From: [identity profile] ex-zadoff59.livejournal.com
ты наверно купил свое ls на брайтон бичь
:-)

(no subject)

Date: 2003-08-09 01:21 pm (UTC)
From: [identity profile] 109.livejournal.com
UnixUtils

(no subject)

Date: 2003-08-09 02:30 am (UTC)
From: [identity profile] asy.livejournal.com
а разве не очевидно, что должно быть "-t" ??

(no subject)

Date: 2003-08-09 11:58 am (UTC)
From: [identity profile] 109.livejournal.com
читаем внимательно - "по времени создания". а -t - modification time, не так ли?

(no subject)

Date: 2003-08-09 01:42 pm (UTC)
From: [identity profile] asy.livejournal.com
прости. читаю невнимательно.
(никогда не видела у файла дату создания. даже не знала, что оно существует)

(no subject)

Date: 2003-08-09 02:01 pm (UTC)
From: [identity profile] 109.livejournal.com
а у тебя, может, вообще юникс стоит? :-)

(no subject)

Date: 2003-08-09 02:28 pm (UTC)
From: [identity profile] asy.livejournal.com
не... я не настолько вообще :)

(no subject)

Date: 2003-08-09 05:31 am (UTC)
From: [identity profile] msh.livejournal.com
У CLI крутая learning curve. Надо научиться комбинировать несколько базовых tools типа find и xargs и читать man. После чего можно ключи не рассматривать и не пробовать, а просто найти в мане за 30 секунд.

(no subject)

Date: 2003-08-09 12:12 pm (UTC)
From: [identity profile] 109.livejournal.com
ах, в мане... а я наивно надеялся, что --help достаточно.

и потом, вот тут крутость learning curve успешно продемонстрировали :-)

(no subject)

Date: 2003-08-09 12:27 pm (UTC)
From: [identity profile] evolver.livejournal.com
ах, в мане... а я наивно надеялся, что --help достаточно.
[109_mode]
виндузятники меня обычно поражают своей незатейливостью. они пытаются обругать утилиту, не изучив man по ней.
[/109_mode]

(no subject)

Date: 2003-08-09 12:57 pm (UTC)
From: [identity profile] 109.livejournal.com
ты чего, Кузьмич - обиделся?

(no subject)

Date: 2003-08-09 01:01 pm (UTC)
From: [identity profile] evolver.livejournal.com
Нет, просто я тебя травлю!

(no subject)

Date: 2003-08-09 12:29 pm (UTC)
From: [identity profile] msh.livejournal.com
Да у него все правильно. Просто если ты правда хочешь научиться CLI, надо поставить нормальный shell (bash, а то ты сейчас csh еще найдешь)
вот в этом

$ bash -version
GNU bash, version 2.05b.0(1)-release (i686-pc-cygwin)
Copyright (C) 2002 Free Software Foundation, Inc.

все работает. И find нужен настоящий, например

$ find -version
GNU find version 4.1.7

Ну и читать man-ы


гуй всегда победит

Date: 2003-08-09 12:50 pm (UTC)
From: [identity profile] 109.livejournal.com
слава богу, прошли фидошные времена, когда мне CLI приходилось пользоваться всё время. так что насчёт "научиться" - это ты не по адресу. я до сих пор половину ключей arj помню, а уж сколько лет прошло.

кроме того, зачем мне учиться, как утилиты работают на юниксе, если я все свои задачи решаю под виндами? просто казалось, что в данном конкретном случае CLI подошёл бы лучше. ан хрен, всё равно гуй победил.

I STARTED AT ZERO

Date: 2003-08-09 12:56 pm (UTC)
From: [identity profile] msh.livejournal.com
так что насчёт "научиться" - это ты не по адресу

(оглядываясь) а остальные участники дискуссии вроде умеют и так ;-)

половину ключей arj помню

Это примерно также относится к умению пользоваться CLI, как запоминание всех функций из
[Error: Irreparable invalid markup ('<stdio.h>') in entry. Owner must fix manually. Raw contents below.]

<i>так что насчёт "научиться" - это ты не по адресу</i>

(оглядываясь) а остальные участники дискуссии вроде умеют и так ;-)

<i>половину ключей arj помню</i>

Это примерно также относится к умению пользоваться CLI, как запоминание всех функций из <stdio.h> - к программированию

Re: I STARTED AT ZERO

Date: 2003-08-09 12:58 pm (UTC)
From: [identity profile] msh.livejournal.com
функций из <stdio.h>

Re: I STARTED AT ZERO

Date: 2003-08-09 01:37 pm (UTC)
From: [identity profile] 109.livejournal.com
ага, ага. а работающей командной строки никто из умельцев так и не написал. я правильно понимаю, что надо опять на перле писать? :-)

Re: I STARTED AT ZERO

Date: 2003-08-09 01:40 pm (UTC)
From: [identity profile] msh.livejournal.com
В смысле? Первая же сказанная тебе строчка - работает.

Кстати, а все ключи rar ты не помнишь, случайно?

Re: I STARTED AT ZERO

Date: 2003-08-09 02:00 pm (UTC)
From: [identity profile] 109.livejournal.com
В смысле? Первая же сказанная тебе строчка - работает.

где работает, на юниксе? мне не надо на юниксе, тем более, что там даже creation time нет (это правда, что ли?)

Re: I STARTED AT ZERO

Date: 2003-08-09 02:38 pm (UTC)
From: [identity profile] msh.livejournal.com
msh@MSH ~
$ touch a

msh@MSH ~
$ touch b

msh@MSH ~
$ ls -t `find . -type f`
./b ./a ./.bash_history

msh@MSH ~
$ uname
CYGWIN_NT-5.0

Re: I STARTED AT ZERO

Date: 2003-08-10 02:43 am (UTC)
From: [identity profile] msh.livejournal.com
Ты так и не посмотрел в man?

Нет на Unix creation time, поэтому в каждом порте ls ошеломленные новыми небывалыми возможностями Windows программисты делали по разному

Например, у MKS Tools -t сортирует именно по creation time. А у Cygnus (и это даже сказано в ls --help) надо делать ls --time=ctime

Re: I STARTED AT ZERO

Date: 2003-08-10 08:29 am (UTC)
From: [identity profile] 109.livejournal.com
нет у меня никакого мана. а начал я с чтения ls --help, я же написал. этим, собственно, и закончил. вот, что было в моём распоряжении:
-----
Usage: ls [OPTION]... [FILE]...
List information about the FILEs (the current directory by default).
Sort entries alphabetically if none of -cftuSUX nor --sort.

-a, --all do not hide entries starting with .
-A, --almost-all do not list implied . and ..
-b, --escape print octal escapes for nongraphic characters
-B, --ignore-backups do not list implied entries ending with ~
-c sort by change time; with -l: show ctime
-C list entries by columns
--color[=WHEN] control whether color is used to distinguish file
types. WHEN may be `never', `always', or `auto'
-d, --directory list directory entries instead of contents
-D, --dired generate output designed for Emacs' dired mode
-f do not sort, enable -aU, disable -lst
-F, --classify append a character for typing each entry
--format=WORD across -x, commas -m, horizontal -x, long -l,
single-column -1, verbose -l, vertical -C
--full-time list both full date and full time
-g (ignored)
-G, --no-group inhibit display of group information
-i, --inode print index number of each file
-I, --ignore=PATTERN do not list implied entries matching shell PATTERN
-k, --kilobytes use 1024 blocks, not 512 despite POSIXLY_CORRECT
-l use a long listing format
-L, --dereference list entries pointed to by symbolic links
-m fill width with a comma separated list of entries
-n, --numeric-uid-gid list numeric UIDs and GIDs instead of names
-N, --literal print raw entry names (don't treat e.g. control
characters specially)
-o use long listing format without group info
-p append a character for typing each entry
-q, --hide-control-chars print ? instead of non graphic characters
-Q, --quote-name enclose entry names in double quotes
-r, --reverse reverse order while sorting
-R, --recursive list subdirectories recursively
-s, --size print size of each file, in blocks
-S sort by file size
--sort=WORD ctime -c, extension -X, none -U, size -S,
status -c, time -t, atime -u, access -u, use -u
--time=WORD show time as WORD instead of modification time:
atime, access, use, ctime or status
-t sort by modification time; with -l: show mtime
-T, --tabsize=COLS assume tab stops at each COLS instead of 8
-u sort by last access time; with -l: show atime
-U do not sort; list entries in directory order
-w, --width=COLS assume screen width instead of current value
-x list entries by lines instead of by columns
-X sort alphabetically by entry extension
-1 list one file per line
--help display this help and exit
--version output version information and exit

By default, color is not used to distinguish types of files. That is
equivalent to using --color=none. Using the --color option without the
optional WHEN argument is equivalent to using --color=always. With
--color=auto, color codes are output only if standard output is connected
to a terminal (tty).

Report bugs to fileutils-bugs@gnu.ai.mit.edu
----
скажи мне теперь, как из этого хелпа извлечь результат. closest thing I came up with is
ls -lGRSc --time=c
но она сортирует внутри каждого фолдера отдельно и выводит group information, несмотря на -G. отдельным вопросом стоит, почему надо писать
-Sc --time=c, а --sort=с написать нельзя и как это следует из --help.

Re: I STARTED AT ZERO

Date: 2003-08-10 10:39 am (UTC)
From: [identity profile] evolver.livejournal.com
скажи мне теперь, как из этого хелпа извлечь результат.
(терпеливо) Think out of the box. Задача решается в два, а не в одно действие. Но о такой возможности ты даже не подумал, раз 15 минут пытался решить ее с помощью одного только ls, который в одиночку этого сделать не может. Разве что в пределах одного каталога.

Хотя что-то мне подсказывает, что в гуе ты проделал тоже самое: рекурсивно построил список всех файлов, а потом его отсортировал. Это именно то, что делает предложенная мной строка. То, что ты не смог выразить это в терминах CLI - так это просто твое незнание, а не плохая функциональность CLI.

С другой стороны на имеющемся у тебя наборе костылей из UnixUtils и cmd.exe это не реализовать. Но кривость данного конкретного setup-а не является достаточным аргументом, чтобы делать выводы о нефункциональности CLI в общем случае. По этому поводу даже пословица про зеркало есть.

(no subject)

Date: 2003-08-11 06:54 am (UTC)
From: [identity profile] 109.livejournal.com
1. out of the box, усраться можно. out of the box я подумал, когда меня осенило, что даже задачу, типичную для CLI в GUI можно сделать гораздо быстрее и проще.

2. то, что даже такой продвинутый пользователь, как я, не смог сделать это в CLI за 15 минут, а сделал в GUI за 10 секунд - говорит только о предельной маргинальности CLI. иными словами - CLI is dead.

3. и опять нет (с), это безусловно можно сделать с помощью UnixUtils. если бы этого нельзя было сделать, CLI бы сосало не просто, как оно делает сейчас, а неимоверно.

только я не настолько затронут данной темой, чтобы ещё тратить своё время сверх уже затраченного, чтобы найти очередную бессмысленную комбинацию буковок. тем более, что это не я тут пытаюсь доказать, что CLI не сосёт.
(deleted comment)

(no subject)

Date: 2003-08-13 12:53 pm (UTC)
From: [identity profile] 109.livejournal.com
да, что-то вроде. но только сортированное всё целиком, а не по фолдерам. ибо /B, хоть и отменяет вывод заголовков, но саму-то разбивку по фолдерам не отменяет.

ps. слава богу, что я до этого не дошёл! я почему-то сразу решил, что dir не справится, и принялся ls изучать. а так я бы ещё больше времени убил. :-)

(no subject)

Date: 2003-08-13 12:52 pm (UTC)
From: [identity profile] evolver.livejournal.com
Слил

Всего лишь 4-буквенная комбинация из трех различных букв, между прочим.

Выводы:
1. Think out of the box
2. Be big enough to admit

(no subject)

Date: 2003-08-13 02:06 pm (UTC)
From: [identity profile] 109.livejournal.com
я-то, конечно, слил, но вот уже пять дней прошло, а ты так и не смог написать работающую строчку. даже вон человек с dir подобрался ближе к результату.

да, вот ещё (чтобы сэкономить roundtrip) - любой, кроме самых упёртых, давно бы мог понять, что меня не интересует строчка, которая у тебя на компьютере работает - меня интересует строчка, которая у меня на компьютере будет работать.

если бы у нас в саппорте кто-нибудь клиенту сказал "меня не ебёт, у меня на машине всё работает" - его бы сразу уволили нахрен. а в остальном, конечно, я слил.

(no subject)

Date: 2003-08-13 02:08 pm (UTC)
From: [identity profile] brohm.livejournal.com
А расскажите пожалуйста, как требуемого результата добиться в GUI на моем компьютере?
Ну и, до кучи, на вашем?

(no subject)

Date: 2003-08-13 02:14 pm (UTC)
From: [identity profile] 109.livejournal.com
а какой у вас компьютер?

на моём - сделать в эксплорере search *.* начиная с требуемого места, сделать видимой колонку 'Creation Time' и жмакнуть по ней со всей силы мышкой.
(deleted comment)

(no subject)

Date: 2003-08-14 06:29 am (UTC)
From: [identity profile] 109.livejournal.com
да, я посмотрел - у меня на w2k тоже creation time нету в списке колонок. значит, только начиная с xp.

я как-то живу без resource kit и support tools. впрочем, я системным программированием не занимаюсь.

Profile

109: (Default)
109

March 2019

S M T W T F S
     12
3456789
101112131415 16
17181920212223
24252627282930
31      

Most Popular Tags

Style Credit

Expand Cut Tags

No cut tags