Мне нужно отсортировать файлы в текущем каталоге по количеству слов, используя команду wc и канал | обязательно. Какую команду я должен использовать?
Я думал, что мне нужно использовать команду sort | wc -w, но я не смог.
Да, проблема заключалась в том, что «• Сортировка файлов в текущем каталоге по количеству слов — подсказка: wc и pipe»
Я думаю, это может помочь.
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 Надеюсь, это поможет :)
Вы имеете в виду сортировку файлов по количеству содержащихся в них слов?