Я хотел бы ограничить вывод команды find. В прошлом я использовал для этой команды ls, например:
ls *tgz|head -100|xargs -i mv "{}" ../
но я узнал, что результат может быть непредсказуемым, если имя файла содержит символ новой строки. Так что более правильный способ сделать это что-то вроде этого:
find ... -print0 | xargs -0
Но, используя этот подход, я не могу ограничить вывод команды find командой head - она показывает все имена файлов, разделенные специальным знаком ^ @:
find . -name '*tgz' -print0|head -2|less
file1.tgz ^ @ file2.tgz ^ @ ^ @ file3.tgz file4.tgz ^ @ ^ @ file5.tgz
Есть ли способ избавиться от этой неловкости?
Я попытался решить это с помощью awk:
find . -name 'BATCHED*' -print0|awk 'BEGIN{RS=""}'
но он по-прежнему отображает все или нулевые строки.
Можно ли это решить с помощью awk? Есть ли лучшее решение?
КСТАТИ. Я нашел эту очень поучительную ссылку, но нет ответа на мой вопрос.