Я пытаюсь использовать Bash, чтобы найти все текстовые файлы на моем жестком диске, отсортировать их по размеру и экспортировать CSV-список их путей.
Это похоже на несколько других потоков в SO.Вероятно, наиболее близко к этому: Как сортировать результаты поиска по размерам файлов
Но есть несколько вариантов ранее предложенного кода, которые я не совсем понимаю.
Эта строка позволяет мне искать по типу файла и экспортировать результаты в виде имен путей, но мне неясно, как объединить это с другими необходимыми функциями (а именно, сортировать имена путей по размеру).
find / -type f -name '*.txt' > ~/Desktop/sorted.csv
Я делаю это на MacOS, и я новичок в Bash, поэтому до сих пор было сложно найти решение.
edit: Используя биты другого кода, я смог собрать это воедино.Из того, что я понимаю, команда "find" находит все файлы с расширением txt и печатает полный список информации о файле с указанием пути.«sort» выбирает 5-е «поле», которое (всегда?) размер файла, и сортирует информацию соответствующим образом.Затем awk используется для печати полей с 9 по 13, что является проблемой.это печать битов и частей пути, возможно потому, что каждый бит пути занимает свое собственное поле в этой точке.
find / -type f -name '*.txt' -exec ls -al {} \;|sort -k 5 -n| awk '{ print $9, $10, $11, $12, $13 }' > ~/Desktop/sorts/sorted.txt
Просто добавлю одно последнее добавление, благодаря комментариям RobC: я бы хотел, чтобы окончательный CSV-файл был просто списком отсортированных путей.Размер файла больше не включен.Ascending / Descending не имеет значения.