Простое задание для линуксоидов Litesav 17 Янв 2017, 18:20 Добрый вечер. В универе дали следующее задание. 1) Написать SH скрипт, который укажет название самого большого файла среди файлов одного и того же расширения Прошу помочь ;) --------------- Jaguar 17 Янв 2017, 19:55 find CHANGEDIRECTORY -mount -type f -ls 2> /dev/null | sort -rnk7 | head -1 | awk '{printf "%10d MB\t%s\n",($7/1024)/1024,$NF}' sleep 10 --------------- Litesav 17 Янв 2017, 23:11 Jaguar, можешь пояснить команды в твоём коде? добавлено спустя 3 минуты: Jaguar, поправил 1-ый пост. Одного и того же расширения* --------------- Jaguar 17 Янв 2017, 23:23 find - поиск CHANGEDIRECTORY - директория в которой искать mount - не переходить на другие файловые системы type - что ищем: f=файл ls - вывод содержимого каталога 2> /dev/null все что покажет команда выкинуть в черную дыру sort - сортировка файлов -rnk - сначала обратить результаты сравнения, потом сравнить числовые значения строк head вывести первые столькото строк в этом случае 1 awk вывод результата sleep усыпить результаты чтобы консолька не закрылась на 10 сек --------------- Litesav 17 Янв 2017, 23:29 Jaguar, это по файлам одного расширения наибольший выбирается? Что будет, если будет в папке файлы нескольких расширений. Что такое чёрная дыра? --------------- Jaguar 17 Янв 2017, 23:29 Litesav, после -type f допиши -name *.txt Будет искать все файлы с расширением txt --------------- Litesav 17 Янв 2017, 23:31 Jaguar, а сейчас по твоему коду какое расширение ищет? --------------- Jaguar 17 Янв 2017, 23:31 Litesav, я не очень линуксойд, но в моем понимании черня дыра, это такое место в линуксе, которое может принят в себя что угодно но не сохраняет это нигде. Т.е это примерно мусорник без дна, кидай туда что угодно и все в него влезет --------------- Litesav 17 Янв 2017, 23:32 Вот так? find CHANGEDIRECTORY -mount -type f -name *.txt -ls 2> /dev/null | sort -rnk7 | head -1 | awk '{printf "%10d MB\t%s\n",($7/1024)/1024,$NF}' sleep 10 --------------- Jaguar 17 Янв 2017, 23:34 Litesav, в первом варианте, ищет самый большой файл с любым расширением в заданной папке. Допишешь -name *.txt будет искать тоолько txt файлы. И ему будет до фонаря на другие файлы, даже если они будут в 100 раз больше добавлено спустя 45 секунд: Litesav, угу) --------------- Litesav 17 Янв 2017, 23:35 Jaguar, ты бы не мог зайти в папку с файлами txt и левыми файлами, отобразить в виде таблицы (чтобы было видно размер и расширение), заскринить это. Затем для этой директории использовать поиск по расширению txt в SH и заскринить, что выдаст результат SH скрипта? У меня Линукса нету, а в универе завтра скриншоты демонстрировать --------------- Jaguar 17 Янв 2017, 23:40 у меня тоже это дело не в линуксе работает), но ща чтонибудь придумаем ) --------------- Litesav 17 Янв 2017, 23:42 Jaguar, ну не обязательно Linux, Ubuntu и т.д тоже можно.) или у тебя вообще Windows? добавлено спустя 57 секунд: Jaguar, find CHANGEDIRECTORY директория ж конкретно не указана, в какой директории он будет искать? --------------- Jaguar 17 Янв 2017, 23:43 Litesav, у меня windows, да)) добавлено спустя 1 минуту: Litesav, ну тебе нужно сменить это слово на ту папку где у тебя те файлы. У меня они находятся в папке "a" а папка лежит в тойже директории что и скрипт --------------- Litesav 17 Янв 2017, 23:45 Jaguar, и как у тебя для папки 'а' код выглядит? Как задать адрес, с какого корневого каталога для систем Ubuntu начинать? --------------- Jaguar 17 Янв 2017, 23:48 Litesav, ls a/ -1l find a/ -mount -type f -name *.txt -ls 2> /dev/null | sort -rnk7 | head -1 | awk '{printf "Biggest txt file is %10d MB\t%s\n",($7/1024)/1024,$NF}' sleep 10 результат команды на скринах там также пути выглядят, если их задавать от текущего каталога а не от корня --------------- Litesav 17 Янв 2017, 23:51 Jaguar, чёрт возьми, на многих крупных форумах писал, там помочь не смогли, на хвабе помогли. За 500р предлагали написать даже :D. Не решался тут тему создать, но создал, мало ли. И ты помог ;). Спасибо ;). --------------- Jaguar 17 Янв 2017, 23:52 Litesav, потому-что хваб лучше многих крупных форумов :hello: Пожалуйста ;) --------------- Litesav 17 Янв 2017, 23:53 ls a/ -1l результат команды на скринах там также пути выглядят, если их задавать от текущего каталога а не от корня что этот кусок кода значит? --------------- Jaguar 17 Янв 2017, 23:56 вывести все что находится в папке a/ в колонку показывая: тип файла, права доступа к файлу, количество ссылок на файл, имя владельца, имя группы, размер файла (в байтах), время создания и имя файла. Даже "1" можно убрать и записать ls a/ -l результат будет тотже) --------------- Litesav 18 Янв 2017, 0:06 Jaguar, ($7/1024)/1024,$NF}' - а вот это что?) добавлено спустя 2 минуты: Jaguar, можешь выложить свой последний код в виде SH файла, а также всю свою папку 'a' в архиве?) добавлено спустя 4 минуты: Чтобы я пришёл, просто запустил скрипт на выполнение для твоей папки.) --------------- Jaguar 18 Янв 2017, 0:06 -rnk7 - тут мы выбираем из данных 7 колонку или размер файла. Колонки примерно какого формата выводятся писал выше(тип файла, владелец, имя размер и т.д). так вот 7 это размер файла в байтах. Мы этот размер берем из переменной $7 хз как ее назвать, переменная окружения, или системная, не суть короче. Вообщем берем мы этот размер в байтах и конвертим в мегабайты. Т.е дофига байт делим на 1024 получаем килобайты, а потом килобайты опять делим на 1024 и получаем мегабайты. NF если правильно помню печатать строки, содержащие хотя бы одно поле --------------- Litesav 18 Янв 2017, 0:09 Jaguar, ок, понял :) --------------- Jaguar 18 Янв 2017, 0:12 Держи))). Hа линуксах права доступа смотри, ибо может без них не заработать ;/ --------------- Litesav 18 Янв 2017, 0:13 Jaguar, если ты мне кинешь архив с sh скриптом и папкой. Я просто могу придти извлечь папку(саму папку, не содержимое) в директорию с sh скриптом и просто запустить sh скрипт? --------------- Jaguar 18 Янв 2017, 0:15 Litesav, пришел, извлек в любую папку, зашел в ту папку, нажал на скрипт и все должно работать. Не заработает, тогда уже смотри права доступа --------------- Litesav 18 Янв 2017, 0:19 Jaguar, понял, спасибо! ;) --------------- Jaguar 18 Янв 2017, 0:29 Litesav, :) ---------------