команды трубопроводов после трубопровода xargs

HP-UX ***** B.11.23 U ia64 **** Лицензия на неограниченное количество пользователей

find . -type d -name *log*|xargs ls -la 

дает мне имя каталога (те, которые содержат журнал в имени каталога), а затем все файлы в этом каталоге.

Каталоги /var/opt/SID/application_a/log/ , /var/opt/SID/application_b/log/ , /var/opt/SID/application_c/log/ и т. Д. Содержат файлы журналов.

Я хочу, чтобы только две последние лог-файлы были перечислены командой ls, которую я обычно нахожу, используя ls -latr|tail -2 .

Результат должен быть примерно таким.

 /var/opt/SID/application_a/log/ -rw-rw-rw- 1 user1 user1 59698 Jun 11 2013 log1 -rw-rw-rw- 1 user1 user1 59698 Jun 10 2013 log2 /var/opt/SID/application_b/log/ -rw-rw-rw- 1 user1 user1 59698 Jun 11 2013 log1 -rw-rw-rw- 1 user1 user1 59698 Jun 10 2013 log2 /var/opt/SID/application_c/log/ -rw-rw-rw- 1 user1 user1 59698 Jun 11 2013 log1 -rw-rw-rw- 1 user1 user1 59698 Jun 10 2013 log2 

find . -type d -name *log*|xargs ls -la|tail -2 find . -type d -name *log*|xargs ls -la|tail -2 не дает мне вышеуказанного результата. Я получаю список последних двух файлов find . -type d -name *log*|xargs ls -la find . -type d -name *log*|xargs ls -la command.

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

 find . -type d -name *log*|xargs sh -c "ls -ltr|tail -10" 

дает мне список из десяти имен каталогов внутри текущего каталога, который является / var / opt / SID, и это тоже не то, что я хочу.

  • Трубопровод нескольких строк в сценарии bash
  • Удалите файлы, которые предоставляются по каналу
  • Проблемы с find, xargs и egrep
  • Прикрепление файла в Unix для данной строки, а затем другой набор строк в этом файле и печать свойств файла тоже
  • xargs не генерирует правильную команду
  • Как копировать рекурсивно все файлы не старше 1 дня?
  • Объединить xargs -I с sed
  • Возможно ли, чтобы ls поддерживал порядок своих входов
  • 2 Solutions collect form web for “команды трубопроводов после трубопровода xargs”

    Вы почти там. В вашей последней команде вы можете использовать -I для правильной работы ls

      -I replace-str Replace occurrences of replace-str in the initial-arguments with names read from standard input. Also, unquoted blanks do not terminate input items; instead the separator is the newline character. Implies -x and -L 1. 

    Итак, с

      find . -type d -name "*log*" | xargs -I {} sh -c "echo {};ls -la {} | tail -2" 

    вы будете echo от найденного find, затем сделайте « ls |tail » на нем

    GNU Parallel упрощает такие задачи:

     find . -type d -name "*log*" | parallel --tag "ls -la {} | tail -2" 

    Если вы не хотите выполнять полную установку GNU Parallel, вы можете выполнить минимальную установку: http://git.savannah.gnu.org/cgit/parallel.git/tree/README

    Interesting Posts

    В emacs существует ли способ Hex редактировать / просматривать буфер без потери информации об отмене?

    Разбор файла в linux: сохранение только временных меток

    Как выделить текущую строку и курсор в .vimrc?

    Пароль защищает PDF-файл с помощью AES 256

    Удалите все слова перед определенным шаблоном, после другого шаблона

    Замена шаблона в строке, предшествующей другому интересующему образцу

    gvim цвета то же самое, что и терминал

    FreeBSD: Как установить Django с mod_wsgi?

    Отключение xscreensaver, когда firefox воспроизводит видео HTM5

    Как создать инструмент с конкретными библиотеками, не нарушая работу Fedora?

    Если я изменю разрешения на файл tar, это применимо к файлам внутри него?

    почему значение inode изменяется при редактировании в редакторе vi?

    Как включить режим восстановления зоны памяти на ядре Linux?

    разрезать с помощью 2-символьного разделителя

    Использование порта 587 с sendmail

    Linux и Unix - лучшая ОС в мире.