Xwab
Форумыnavigate_nextДругие языки программирования

Простое задание для линуксоидов
Сообщения
Litesav

Добрый вечер. В универе дали следующее задание.

1) Написать SH скрипт, который укажет название самого большого файла среди файлов одного и того же расширения


Прошу помочь


__________
посл.ред. 17 Янв 2017, 23:11; всего 1 раз 17 Янв 2017, 18:20
Jaguar

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

17 Янв 2017, 19:55
Litesav

Jaguar, можешь пояснить команды в твоём коде?
добавлено спустя 3 минуты:
Jaguar, поправил 1-ый пост. Одного и того же расширения*

17 Янв 2017, 23:11
Jaguar

find - поиск
CHANGEDIRECTORY - директория в которой искать
mount - не переходить на другие файловые системы
type - что ищем: f=файл
ls - вывод содержимого каталога
2> /dev/null все что покажет команда выкинуть в черную дыру
sort - сортировка файлов
-rnk - сначала обратить результаты сравнения, потом сравнить числовые значения строк
head вывести первые столькото строк в этом случае 1
awk вывод результата
sleep усыпить результаты чтобы консолька не закрылась на 10 сек

17 Янв 2017, 23:23
Litesav

Jaguar, это по файлам одного расширения наибольший выбирается? Что будет, если будет в папке файлы нескольких расширений. Что такое чёрная дыра?

17 Янв 2017, 23:29
Jaguar

Litesav, после -type f допиши -name *.txt
Будет искать все файлы с расширением txt

17 Янв 2017, 23:29
Litesav

Jaguar, а сейчас по твоему коду какое расширение ищет?

17 Янв 2017, 23:31
Jaguar

Litesav, я не очень линуксойд, но в моем понимании черня дыра, это такое место в линуксе, которое может принят в себя что угодно но не сохраняет это нигде. Т.е это примерно мусорник без дна, кидай туда что угодно и все в него влезет

17 Янв 2017, 23:31
Litesav

Вот так?

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

17 Янв 2017, 23:32
Jaguar

Litesav, в первом варианте, ищет самый большой файл с любым расширением в заданной папке. Допишешь -name *.txt будет искать тоолько txt файлы. И ему будет до фонаря на другие файлы, даже если они будут в 100 раз больше
добавлено спустя 45 секунд:
Litesav, угу)

17 Янв 2017, 23:34
Ответить на тему