Разный вывод `find | xargs ls` для той же команды в разных версиях Ubuntu

У меня есть две установки Ubuntu:

A: 14.04.3 LTS (GNU/Linux 3.13.0-77-generic x86_64)

B: 14.04.2 LTS (GNU/Linux 3.13.0-61-generic x86_64)

Я выполняю следующую команду:

 find . -name "nosuch.file" -print0 | xargs -0 ls 

(реальная команда сложнее, но мне удалось ее сузить). В текущем каталоге или подкаталогах нет файла nosuch.file .

На сервере A команда производит пустой вывод, как я ожидал.

На сервере B команда создает список текущего каталога (где я запускаю команду).

На обоих серверах выполняется только find . -name "nosuch.file" -print0 find . -name "nosuch.file" -print0 производит пустой вывод.

На обоих серверах установлена xargs и та же версия find , xargs и ls :

 $ find --version find (GNU findutils) 4.4.2 Copyright (C) 2007 Free Software Foundation, Inc. License GPLv3+: GNU GPL version 3 or later <http://gnu.org/licenses/gpl.html> This is free software: you are free to change and redistribute it. There is NO WARRANTY, to the extent permitted by law. Written by Eric B. Decker, James Youngman, and Kevin Dalley. Built using GNU gnulib version e5573b1bad88bfabcda181b9e0125fb0c52b7d3b Features enabled: D_TYPE O_NOFOLLOW(enabled) LEAF_OPTIMISATION FTS() CBO(level=0) $ xargs --version xargs (GNU findutils) 4.4.2 Copyright (C) 2007 Free Software Foundation, Inc. License GPLv3+: GNU GPL version 3 or later <http://gnu.org/licenses/gpl.html> This is free software: you are free to change and redistribute it. There is NO WARRANTY, to the extent permitted by law. Written by Eric B. Decker, James Youngman, and Kevin Dalley. Built using GNU gnulib version e5573b1bad88bfabcda181b9e0125fb0c52b7d3b $ ls --version ls (GNU coreutils) 8.21 Copyright (C) 2013 Free Software Foundation, Inc. License GPLv3+: GNU GPL version 3 or later <http://gnu.org/licenses/gpl.html>. This is free software: you are free to change and redistribute it. There is NO WARRANTY, to the extent permitted by law. Written by Richard M. Stallman and David MacKenzie. 

Почему команда ведет себя по-другому? Что я могу сделать для достижения последовательного поведения, как на сервере A (пустой вывод для не найденных файлов)?

One Solution collect form web for “Разный вывод `find | xargs ls` для той же команды в разных версиях Ubuntu”

«Что я могу сделать для достижения последовательного поведения, как на сервере A (пустой вывод для не найденных файлов)?»

Для достижения такого поведения с помощью xargs вы можете использовать параметр -r / --no-run-if-empty чтобы указанная команда не запускалась, если никакие имена файлов не переданы ей. На странице руководства:

Если стандартный ввод не содержит никаких незадействованных элементов, не запускайте команду. Обычно команда запускается один раз, даже если вход отсутствует.

Обратите внимание, что этот параметр является признаком GNU xargs и не является стандартным, то есть указанным POSIX.

  • Пропустить флаги для xargs
  • xargs: запуск команды один раз со всеми аргументами
  • Как получить код выхода параллельного процесса, запущенного xargs?
  • Как объединить входы xarg с большим количеством аргументов?
  • Передавать аргумент xargs как строку в другую команду с помощью '>'?
  • tcpdump несколько pcaps с xargs
  • Копирование папки с помощью xargs
  • git checkout конкретные файлы
  • использование измененного содержимого файла в качестве аргументов
  • Можете ли вы подключиться к функции .bash_profile?
  • рекурсивно chmod
  • Linux и Unix - лучшая ОС в мире.