IMHO.WS

IMHO.WS (http://www.imho.ws/index.php)
-   Пингвинятник (ОС *NIX) (http://www.imho.ws/forumdisplay.php?f=76)
-   -   Помогите написать скрипт (http://www.imho.ws/showthread.php?t=102181)

MiracleDrug 12.04.2006 00:27

Помогите написать скрипт
 
Помогите пожалуйста написать скрипт под Лінух или Фришку который бы получал название каталога и выводил название подкаталога который создан познее всех.
Можна написать на Перле или на язике командного интерпретатора.
Буду весьма благодарен
:help:

ftpd 12.04.2006 02:41

для фри 5.3(проверено)
скрипту передается параметром имя каталога в котором искать.
Однако используется не дата создания, а дата модификации.
Код:

#!/bin/sh
ls -tAFl $1 | grep -e "\/\$" | awk '{print $9;exit}'

или то же, но без grep
Код:

#!/bin/sh
ls -tAFl $1 |  awk '{if (/\/$/) {print $9;exit} }'


MiracleDrug 12.04.2006 03:10

Цитата:

Сообщение от ftpd
для фри 5.3(проверено)

Код:

#!/bin/sh
ls -tAFl $1 | grep -e "\/\$" | awk '{print $9;exit}'


Если не трудно разясни пожалуйста подробнее об етом выражение.
Особенно интересна и малопонятна команда awk '{print $9;exit}.
:молись:

ftpd 12.04.2006 03:52

вывести 9-ое поле первой строки(т.е. имя файла или каталога) и выйти. :)
строка делится на поля пробелами или табами.
вот пример:
Код:

>ls -tAFl
-rw-------  1 ftpd    wheel      2333 10 апр 12:58 .history
drwxr-xr-x  3 ftpd    wheel        512  7 апр 22:33 .mc/

кратко по каждой команде:
ls -tAFl
вывести все файлы в расширеном виде с указанием "/" в конце имени файла, если файл каталог
grep -e "\/\$"
получить строки которы заканчиваются символом "/"
awk '{print $9;exit}'
вывести 9-ое поле строки и выйти.

MiracleDrug 12.04.2006 11:09

тогда возникает еще 2 вопроса
1) как тогда вывести 3 каталога которые самые старие?
2) как пройтись по всех подкаталогах, подкаталогах етих подкаталогов тоесть по всему дереву каталогов заданого каталога?

ftpd 13.04.2006 02:06

Код:

#!/bin/sh
LC_ALL=C
find $1  -type d -print -exec stat -l {} \; | awk '{ 
if (NF > 1) {
        print $6" "$7" "$8" "$9" "$10; 
}
}'|sort -k4,4n -k1,1M -k2.2n -k3.3g | head -3

делает рекурсивный обход всех подкаталогов указанного каталога, выбирает директории, awk - выгребает нужные поля - sort сортирует head - показывает первые три записи.
удачи.

MiracleDrug 13.04.2006 03:13

Спасибо
Вот нашел более простой вариант.

#!/bin/bash
echo -n "Enter the path:"
echo
read $dir_path
find $dir_path -type d -exec stat -c "%y %n" {} \; | sort -n | head -n 1


Часовой пояс GMT +4, время: 01:05.

Powered by vBulletin® Version 3.8.5
Copyright ©2000 - 2026, Jelsoft Enterprises Ltd.