Попытка получить результат переданных команд

Попытка получить результат переданных команд

У меня есть папка с файлами, которые называются list20140801.txt list20140802.txt ....

Я пытаюсь это сделать

ls | sort | tail -3 | cat

Но он просто выдает мне имена файлов, а не анализирует их.

решение1

Согласно catинструкции, работа кошки заключается в следующем:

Объединить ФАЙЛ(Ы) или стандартный ввод в стандартный вывод.

Нет причин, по которым catследует рассматривать его стандартный ввод как имена файлов. Что вам нужно, так это

ls | сортировка | хвост -3 | xargs кошка

вместо.

xargsБолее подробную информацию можно найти на странице руководства:http://linux.about.com/library/cmd/blcmdl1_xargs.htm

решение2

Вывод lsуже отсортирован по умолчанию так же, как и sortсортировка по умолчанию, поэтому sortне нужен.

Наиболее распространенный способ передать сгенерированный список файлов команде — использовать xargs. xargsПодробности смотрите на странице руководства, но в этом случае вам не нужны никакие параметры. ( xargsможет не сделать то, что вам нужно, если у вас огромное количество файлов, но в большинстве распространенных случаев это работает отлично, и вам не нужно об этом думать.)

Версия , tailиспользуемая во многих системах Linux в наши дни, не принимается просто -3как опция. Она требует, чтобы вы использовали -n3.

Наконец, catв конце конвейера нет ничего полезного, поэтому его тоже можно пропустить.

Эта команда должна сделать то, что вам нужно.

ls | xargs tail -n3

Обновлять

Я только что прочитал ответ @AtomicHeartFather и понял, что я, возможно, поставил tailwith не ту часть проблемы. В этом случае команда будет

ls | tail -n3 | xargs cat

что в значительной степени соответствует тому, что написал AtomicHeartFather, за исключением sort.

Связанный контент