Конвейерная передача результата ls to tail [duplicate]

Установка пакета perl-File-MimeInfo устранила проблему!

Дополнительная информация на Почему `xdg-mime query filetype ...` не может найти новый добавленный тип файла?

3
16.02.2017, 16:17
2 ответа

Используйте подстановку команды :

tail -f "$(ls -1r *.log | head -n 1)"

Это запускает ls -1r * .log | head -n 1 в подоболочке, берет его выходные данные и создает новую команду, используя их; поэтому, если канал ls выводит data170216.log , команда становится

tail -f "data170216.log"

, что вам и нужно.

Примечание head -n 1 вместо head -1 ; последняя форма сейчас устарела.

11
27.01.2020, 21:11

В таких случаях можно использовать xargs . Может быть, самый простой и легкий:

$ ls -1r *.log | sed -n 1p | xargs tail -f

Или:

$ ls -1r *.log | head -1 | xargs tail -f

Оба работают нормально.

См. man xargs

ПРИМЕРЫ :

Найдите файлы с именем core в каталоге / tmp или ниже и удалите их. Обратите внимание, что это будет работать неправильно, если есть какие-либо имена файлов, содержащие символы новой строки или пробелы:

find /tmp -name core -type f -print | xargs /bin/rm -f

Найдите файлы с именем core в каталоге / tmp или ниже и удалите их, обрабатывая имена файлов таким образом, чтобы имена файлов или каталогов, содержащие пробелы или символы новой строки, были правильно обработаны:

find /tmp -name core -type f -print0 | xargs -0 /bin/rm -f

Найдите файлы с именем core в каталоге / tmp или ниже и удалите их, обрабатывая имена файлов таким образом, чтобы имена файлов или каталогов, содержащие пробелы или символы новой строки, обрабатывались правильно:

find /tmp -depth -name core -type f -delete

Найдите файлы с именем core в или ниже каталог / tmp и удалите их, но более эффективно, чем в предыдущем примере (потому что мы избегаем необходимости использовать fork (2) и exec (2) для запуска rm, и нам не нужен дополнительный процесс xargs)

Создает компактный список всех пользователей системы:

cut -d: -f1 < /etc/passwd | sort | xargs echo

Запускает минимальное количество копий Emacs, одну за другой, для редактирования файлов, перечисленных в стандартном вводе xargs. В этом примере достигается тот же эффект, что и в BSD с параметром -o, но более гибким и переносимым способом:

xargs sh -c 'emacs "$@" < /dev/tty' emacs
4
27.01.2020, 21:11

Теги

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