xargs терпит неудачу с обратным слэшем, цитаты. Это должно быть что-то вроде
ls -1 |tr \\n \\0 |xargs -0 -iTHIS echo "THIS is a file."
xargs -0 вариант:
-0, --null
Input items are terminated by a null character instead of by whitespace, and the quotes and backslash are
not special (every character is taken literally). Disables the end of file string, which is treated like
any other argument. Useful when input items might contain white space, quote marks, or backslashes. The
GNU find -print0 option produces input suitable for this mode.
ls -1
расторгает элементы с символами новой строки, так tr
переводит их в пустые символы.
Этот подход примерно в 50 раз медленнее, чем итерация вручную с for ...
(см ответ Michael Aaron Сафьян S) (3.55s vs. 0.066s). Но для других команд ввода, таких как поиск, поиск, чтение из файла (tr \\n \\0 <file
) или аналогичный, вам необходимо работать с xargs
следующим образом.
'ls' автоматически выполняет' -1' в трубе. –
@Dennis, не выглядит так: 'ls | xargs -L2 echo' и 'ls -1 | xargs -L2 echo' дают два разных выхода. Первый был на одной линии. –
@Alex: Я получаю тот же результат. –