- RU.OS.CMP (2:5015/42) ------------------------------------------- RU.OS.CMP -
From : Wladimir Mutel 2:464/36 Sat 27 Oct 01 16:38
To : All Sat 27 Oct 01 19:02
Subj : Kermit - это круто !
Привет,
Вот сценка из ньюсгруппы comp.unix.aix :
find /u/leedan/testfiles -name G1BL* -atime 2
How do I make the rm command delete the files that this line finds?
Ему, ясное дело, отвечают -
find /u/leedan/testfiles -name G1BL* -atime 2 -exec rm '{}' \;
Ответившему указывают на неэффективность решения и предлагают юзать
xargs -
Please, learn about the "xargs" command and start using it,
- The solution using 'find .... -exec .....' starts a separate
process ('rm', in this example) for each individual file found.
This is overhead which should (and can) be reduced.
find /u/leedan/testfiles -name G1BL* -atime 2 | xargs rm
find /u/leedan/testfiles -name G1BL* -atime +1 | xargs rm
Тут, конечно, пиплы в ответ указывают на возможность символов пробела
или новой строки в именах найденных файлов -
OTOH, please also note that xargs could bite you pretty badly with
filenames that contain embedded spaces or newlines:
-rw-r--r-- 1 palm staff 0 okt 25 12.09 foo bar
$ find . -type f|xargs rm
rm: ./foo: A file or directory in the path name does not exist.
rm: bar: A file or directory in the path name does not exist.
Тут выплывает реальный знаток и говорит -
The next release of C-Kermit, 8.0:
would let you do it like this:
delete /before:-14days *
or:
delete /before:-2weeks *
where "*" applies to the current directory. You might find this more
intuitive than the many permutations of find, xargs, and their options.
If you wanted the file specification to apply recursively, then:
delete /before:-2weeks /recursive *
And if you wanted to add exception lists, size qualifiers, etc, you
could do that too:
C-Kermit>del ?
File specification; or switch, one of the following:
/after: /except: /nodotfiles /not-before: /summary
/ask /heading /noheading /page /tree
/before: /larger-than: /nolist /recursive /type:
/directories /list /nopage /simulate
/dotfiles /noask /not-after: /smaller-than:
C-Kermit>del
Кароче, вывод из лабораторной работы - Kermit хоть и старинная
софтина, но девелопмент его идет и по сей день. И функции он дает
местами очень даже полезные. Для того, кто работает с Unix-shellом, их
очень полезно знать.
Круто, не так ли ? :>
--- ifmail v.2.14.os-p7
* Origin: ISD (2:464/36@fidonet)
|