Mail.ruПочтаМой МирОдноклассникиВКонтактеИгрыЗнакомстваНовостиКалендарьОблакоЗаметкиВсе проекты

Linux Помогите "подружить" команды "ls" и "fing"

Александр Неважно Знаток (284), закрыт 4 года назад
Хочу вывести список файлов (определенного размера более 1 ГБ и менее 3 ГБ), причем список в порядке возрастания размера.
Я знаю как выбрать список
$ sudo find / -size +1G -a -size -3G
и знаю как вывести список
$ ls --size -Shl
Помогите их собрать?
Лучший ответ
Голова Робота Просветленный (36338) 4 года назад
sudo find / -size +1G -a -size -3G -exec ls --size -Shl {} \; | sort
Сортировка не может работать правильно, поскольку ей нужен размер, а точный размер в байтах не выводится. Чтоб была правильная сортировка, этих команд недостаточно.
Александр НеважноЗнаток (284) 4 года назад
мне на почту пришел Ваш ответ с циклом, а сейчас другой ответ) Спасибо за оба!
Второй ответ (рабочий с -exec) шикарен!!!
Но у меня не сработал цикл, (пишет не знаю такую команду фор (хотя уверен, что он знает, но капризничает))). Посмотрите пожалуйста еще раз, почему не работает? ( И еще, почему "IFS" а не "if" ?
IFS=$'\n' for f in `sudo find / -size +1G -a -size -3G` do ls --size -Shl $f done
Голова Робота Просветленный (36338) Я сначала написал с for, потом вспомнил про параметр -exec и удалил вариант с for. Про IFS информация отсюда https://habr.com/ru/company/ruvds/blog/325928/ Но это не в одну строку пишется. Чтоб была правильная сортировка, надо сначала вывести размер файла в байтах без букв k,m,g, отсортировать, потом заново вывести в новом формате при помощи ls или удалить столбец размера. Наверно это можно сделать при помощи awk.
Остальные ответы
Сергей Куликов Ученик (124) 4 года назад
sudo find / -size +1G -a -size -3G | xargs -n 1 ls --size -Shl
Похожие вопросы