Хвост несколько файлов и вывода как дополнительный столбец с результатами 'находки'

chvt N с N количество терминала (2 в Вашем примере). На Debian это находится в kbd пакет, я предполагаю, что это должно быть то же на Ubuntu.

1
30.12.2013, 09:00
2 ответа

Вот:

find . -iname 'updated.txt' -exec ls -l {} \; -exec tail -n1 {} \;

Более простая альтернатива, но с меньшим количеством управления форматированием ls:

find . -iname 'updated.txt' -ls -exec tail -n1 {} \;

ОБНОВЛЕНИЕ

Как Вы сказали в комментариях, Вы предпочитаете иметь ls вывод и tail выходная сторона стороной для каждого файла.

Вы могли выполнить подоболочку для каждого соответствия к echo вывод двух команд рядом:

find . -iname 'updated.txt' -exec sh -c 'echo $(ls -l "{}") $(tail -n1 "{}")' \;

Точно так же Вы могли использовать paste:

find . -iname 'updated.txt' -exec bash -c 'paste <(ls -l "{}") <(tail -n1 "{}")' \;

Или Вы могли выполнить два find команды параллельно и вставка их выходная сторона стороной как это:

paste \
  <(find . -iname 'updated.txt' -exec ls -l {} \;) \
  <(find . -iname 'updated.txt' -exec tail -n1 {} \;)
1
27.01.2020, 23:38
  • 1
    Там какой-либо путь состоит в том, чтобы сохранить все результаты на той же строке однако? В настоящее время каждый раз выслеживает выполнения, он помещает каждый результат в новую строку. –  Kris 30.12.2013, 16:00
  • 2
    Вы хотите сначала список ls -l, одна строка на файл, плюс в конце еще одна строка с содержанием последних строк, вставляемых вместе как столбцы, как этот? –  janos 30.12.2013, 17:04
  • 3
    Все встраивают: я хотел бы tail быть добавленным к ls -l как дополнительный столбец, а не имеют tail добавьте новую строку. –  Kris 30.12.2013, 17:59
  • 4
    первые две опции имеет проблемы, встречающиеся с пробелами в наборе результатов. <br/> <br/> последняя опция работала все же. Вы могли объяснить, как это функционирует? <br/> paste \ <br/> <(find . -iname 'updated.txt' -exec ls -l {} \;) \ <br/> <(find . -iname 'updated.txt' -exec tail -n1 {} \;) –  Kris 30.12.2013, 22:49
  • 5
    Правда, я устранил проблемы с пробелами. <(...) в paste <(cmd1) <(cmd2) назван Заменой Процесса. Идея заменяет <(...) с именованным каналом, который содержит вывод команд внутри. Можно читать об этом в man bash под разделом Process Substitution. –  janos 30.12.2013, 23:03
$ find . -iname 'updated.txt' -printf '%M %u %g %s %Tc %p\t' -exec tail -n1 {} \;

Вывод будет похож:

-rw-r--r-- user group 4853 2013-12-22T00:58:32 MSK ./path/updated.txt    Last line of the updated.txt.
1
27.01.2020, 23:38
  • 1
    И почему downvoted, я могу спросить? –  Dmitry Alexandrov 30.12.2013, 19:02
  • 2
    Одна вещь отметить состоит в том, что это не будет работать из сумки над Mac: printf не поддерживается в находке. После установки findutils это работает как чемпион. Спасибо за справку. –  Kris 30.12.2013, 22:26
  • 3
    @Kris пожалуйста.:) Что касается меня, теперь я знаю, что 'Индивидуалисты' являются выпуском OS X (да, это стоило упомянуть). –  Dmitry Alexandrov 30.12.2013, 22:41

Теги

Похожие вопросы