3

Я использую следующую команду, чтобы перечислить 20 больших файлов в каталоге. Но наряду со списком файлов, он также показывает сообщения об ошибках, такие как отказано в разрешении. Я попытался добавить 2> /dev/null но, похоже, это не понравилось.

Это команда, которую я использую

find . -type f -printf "%s %p\n" | sort -nr | head -n 20

Могу ли я узнать, как избежать всех сообщений об ошибках и отображать только список файлов?

1 ответ1

3

В bash 2> /dev/null будет работать, если вы добавите его как часть самой команды поиска, то есть перед конвейером.

Например, это будет работать:

find -type f -printf "%s %p\n" 2> /dev/null | sort -nr | head -n 20

С tcsh нет простого способа сделать то же самое, но man tcsh упоминает обходной путь:

В настоящее время оболочка не может перенаправить диагностический вывод без перенаправления стандартного вывода, но « (команда> выходной файл)> и файл ошибок » часто является приемлемым обходным решением. Выходной файл или файл ошибок может быть '/dev/tty' для отправки вывода на терминал.

Для простой команды поиска это дает:

(find > /dev/tty) >& /dev/null

При использовании каналов, в отличие от bash, вы должны поместить > /dev/tty после последнего канала, чтобы избежать перенаправления вывода Ambiguous. сообщение об ошибке.

Это будет работать в tcsh:

(find -type f -printf "%s %p\n" | sort -nr | head -n 20 > /dev/tty) >& /dev/null

Всё ещё ищете ответ? Посмотрите другие вопросы с метками .