Как найти, отсортировать по размеру и экспортировать с помощью Bash - PullRequest
0 голосов
/ 27 марта 2019

Я пытаюсь использовать 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 не имеет значения.

1 Ответ

0 голосов
/ 27 марта 2019

Работает ли это:

find / -type f -name '*.txt' -exec du -k {} + | sort -rn > ~/Desktop/sorted.csv
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...