Как сортировать файлы по количеству слов в Linux?

Мне нужно отсортировать файлы в текущем каталоге по количеству слов, используя команду wc и канал | обязательно. Какую команду я должен использовать?

Я думал, что мне нужно использовать команду sort | wc -w, но я не смог.

Вы имеете в виду сортировку файлов по количеству содержащихся в них слов?

Amir reza Riahi 18.11.2022 11:09

Да, проблема заключалась в том, что «• Сортировка файлов в текущем каталоге по количеству слов — подсказка: wc и pipe»

hhhamster 18.11.2022 11:11
[JS за 1 час] - 9. Асинхронный
[JS за 1 час] - 9. Асинхронный
JavaScript является однопоточным, то есть он может обрабатывать только одну задачу за раз. Для обработки длительных задач, таких как сетевые запросы,...
Топ-10 компаний-разработчиков PHP
Топ-10 компаний-разработчиков PHP
Если вы ищете надежных разработчиков PHP рядом с вами, вот список лучших компаний по разработке PHP.
Скраппинг поиска Apple App Store с помощью Python
Скраппинг поиска Apple App Store с помощью Python
📌Примечание: В этой статье я покажу вам, как скрапировать поиск Apple App Store и получить точно такой же результат, как на Apple iMac, потому что...
Редкие достижения на Github ✨
Редкие достижения на Github ✨
Редкая коллекция доступна в профиле на GitHub ✨
Подъем в javascript
Подъем в javascript
Hoisting - это поведение в JavaScript, при котором переменные и объявления функций автоматически "перемещаются" в верхнюю часть соответствующих...
Улучшение генерации файлов Angular
Улучшение генерации файлов Angular
Angular - это фреймворк. Вы можете создать практически любое приложение без использования сторонних библиотек.
0
2
77
1
Перейти к ответу Данный вопрос помечен как решенный

Ответы 1

Ответ принят как подходящий

Я думаю, это может помочь.

ls -1 | xargs wc -w | sort

Ls -1 выведет список всех файлов текущего каталога, а затем передаст его xargs, чтобы использовать вывод предыдущей команды в качестве ввода команды wc -w. Наконец, мы передаем результат команде sort, чтобы упорядочить их по количеству слов, содержащихся в каждом файле. Вы можете узнать больше о xargs здесь.

Выход:

[amirreza@localhost test]$ ls -1
four_words
three_words
two_words
[amirreza@localhost test]$ ls -1 | xargs wc -w
 4 four_words
 3 three_words
 2 two_words
 9 total
[amirreza@localhost test]$ ls -1 | xargs wc -w | sort
 2 two_words
 3 three_words
 4 four_words
 9 total

Редактировать

Я только что понял, что мой ответ был неверным. Так как команда sort по умолчанию работает посимвольно, то результатом сортировки 2, 10, 3 будет:

10, 2, 3

Потому что он проверяет только первый символ 10, а это 1, поэтому он меньше, чем 2 и 3. Чтобы исправить это, мы должны использовать числовую сортировку, используя флаг n. Вот как это работает:

[amirreza@localhost test]$ ls -1 | xargs wc -w | sort
10 ten_words
19 total
 2 two_words
 3 three_words
 4 four_words
[amirreza@localhost test]$ ls -1 | xargs wc -w | sort -n
 2 two_words
 3 three_words
 4 four_words
10 ten_words
19 total

И просто чтобы сделать вывод более чистым, мы можем удалить строку total и просто показать имена файлов.

[amirreza@localhost test]$ ls -1 | xargs wc -w | sort -n | awk  '{print $2}' | head -n -1
zero_word
two_words
three_words
four_words
ten_words

Я люблю тебя,.........ты мой Эйнштейн.......я поняла,спасибо большое T0T

hhhamster 18.11.2022 11:25

@hhhamster Надеюсь, это поможет :)

Amir reza Riahi 18.11.2022 11:27

Другие вопросы по теме