Помогите со скриптом bash

Жалоба
Вопрос

Подскажите пожалуйста. В директории лежат файлы с названиями xxx1, xxx2, xxx3 и так далее. Нужно вывести только файл с наибольшим числом в конце и его размер. Как это правильней реализовать? Может есть какое-то регулярное выражение на это дело?
Дополнение #1 13.11.2010 16:19:24
несовсем, есть файл xxx, а дальше xxx0, xxx1 итд. Обычно файл xxx не интересует, то есть интересуют только те которые с цифрами... вывод ls -1 | sort --key=4 -r  дал мне просто список всех файлов в порядке xxx, xxx1, xxx0

Дополнение #2 13.11.2010 16:47:26
Собстно я тоже в сторону цикла и думал. Видимо проще никак не решить... спасибо wladtfmf. Только там в последней строчке wc -c `ls|grep $max`
а то он просто циферку пытается вывести.

Дополнение #3 13.11.2010 18:20:24
1) ls -1 | sort --key=4 -r | head -1  - а так выводится только xxx, без цифр
2) num=$(ls -1 | grep -o '[[:digit:]]{0,99}'|sort -r |head -1) du $(ls -1 |grep $num) - вот это классно, спасибо.

А если в директории появляются еще yyy,yyy1,yyy2, и их вывод должен быть в другую переменную, то как быть? 2-ой скрипт бреет всех под одну гребенку

В процессе 1
Linux 4 года назад 6 Ответов 416 Просмотров 0

Ответов ( 6 )

    0
    8 лет назад
    Ответить

    Если ххх разный текст, то:

    num=$(ls -1 | grep -o '[[:digit:]]{0,99}'|sort -r |head -1) du $(ls -1 |grep $num)

    если все ххх одинаковые, кроме цифр, то проще:

    du $(ls -1 | grep '[[:digit:]]{0,99}'|sort -r| head -1)

    =====================================================
    Дополнение #3 2):
    num_xxx=$(ls -1 | grep xxx|grep -o '[[:digit:]]{0,99}'|sort -r |head -1) du $(ls -1 |grep xxx|grep $num_xxx); num_yyy=$(ls -1 | grep yyy|grep -o '[[:digit:]]{0,99}'|sort -r |head -1) du $(ls -1 |grep yyy|grep $num_yyy)

    везде подставить свои значения для ххх и ууу
    как-то так (не проверял :)

    0
    8 лет назад
    Ответить

    #если нет, то мб так
    max=0
    for i in $(ls | grep -o '[0-9]*')
    do if((i > max))
    then max=$i
    fi
    done
    wc -c *$max

    0
    8 лет назад
    Ответить

    UPD
    сорри, чушь написал

    0
    8 лет назад
    Ответить

    Если количество символов до номера одинаково во всех именах файлов, то
    ls -1 | sort --key=4 -r

    0
    8 лет назад
    Ответить

    ls -1 | sort --key=4 -r | head -1

    >> а так выводится только xxx, без цифр

    А если почитать "man sort"?..

    >> А если в директории появляются еще yyy

    добавьте grep.

    x_name=$(ls -1 | grep -E "^xxx" | sort --key=4 | tail -1)

    0
    8 лет назад
    Ответить

    Perl

Ваш ответ