найти файл с & ldquo; find & rdquo; и показать размер файла [duplicate]

Это связано с тем, что графический процессор не используется для рендеринга в вашем прецеденте. Когда вы показываете glxinfo, вы показываете, что Растеризатор программного обеспечения используется для визуализации GL для рассматриваемого X DISPLAY (предположительно пересылаемого отображения через ssh, что означает, что glxinfo запрашивает X-сервер на шлюзе для информации GL). [ ! d0]

5
задан 22 May 2018 в 04:04

10 ответов

find имеет опцию -ls. Поэтому ваша команда должна выглядеть так:

find -name '*.conf' -ls
11
ответ дан 22 May 2018 в 15:10

find имеет опцию -ls. Поэтому ваша команда должна выглядеть так:

find -name '*.conf' -ls
12
ответ дан 17 July 2018 в 13:46

find имеет опцию -ls. Поэтому ваша команда должна выглядеть так:

find -name '*.conf' -ls
12
ответ дан 20 July 2018 в 13:51

Опция указывает ваш собственный формат с помощью -printf. Например, это выведет файл, за которым следует пробел, а затем имя файла (с относительным путем):

find -name "*.conf" -printf "%s %p\n"

Вы можете поместить строку формата с помощью \0 вместо \n, если вы хотите использовать NUL -отделить выходные записи поиска, если вы ожидаете забавные имена файлов (например, те, которые включают в себя новые строки).

Для записи попытка, показанная в вашем вопросе, не работает, потому что вы пытаются вывести выход из find для ввода в ls. ls не считывает никаких данных из STDIN, поэтому вывод из find просто отбрасывается, а затем ls перечисляет содержимое текущего каталога, как обычно.

6
ответ дан 22 May 2018 в 15:10

ls не получает свой список файлов со стандартного ввода, он ожидает, что они будут аргументами. Команда xargs является общим средством для ввода входных данных в аргументы:

find -name '*.conf' | xargs ls -l

Однако это приведет к разделению ввода в пробеле, так что у вас могут быть проблемы, если какое-либо из имен имеет пробелы. find и xargs имеют параметры, которые работают вместе, чтобы смягчить это:

find -name '*.conf' -print0 | xargs -0 ls -l

Параметр -0 в xargs сообщает ему использовать нулевой байт в качестве разделителя между параметрами ввода , и -print0 сообщает find печатать имена, разделенные нулевым байтом вместо новой строки.

2
ответ дан 22 May 2018 в 15:10

Другие ответы уже указывали

, как печатать файлы с помощью find, используя -printf, как получить выход ls только с find, используя -ls, как для правильного вывода вывода find в другую программу с помощью xargs

Однако первый и второй подходы не дают точного выхода ls -l (флаг -ls равен ls -dils ]), а третий - дополнительный вызов xargs. С помощью флага -exec можно вызвать ls -l непосредственно из find:

find -name "*.conf" -exec ls -l {} +

Это дает полный список имен файлов в качестве аргументов ls -l и вызывает его как

Если вы просто хотите совместить все файлы, заканчивающиеся на .conf в и под текущим каталогом (и ARG_MAX не проблема !), вам вообще не нужно find. Вместо этого вы можете использовать привязку bash для сопоставления с параметрами оболочки globstar и dotglob следующим образом: это достаточно разумно, чтобы не ломать символы новой строки в именах файлов и не соответствует «скрытым» файлам, например find: 11]

$ shopt -s globstar dotglob
$ ls -l **/*.conf
1
ответ дан 22 May 2018 в 15:10

Другие ответы уже указывали

, как печатать файлы с помощью find, используя -printf, как получить выход ls только с find, используя -ls, как для правильного вывода вывода find в другую программу с помощью xargs

Однако первый и второй подходы не дают точного выхода ls -l (флаг -ls равен ls -dils ]), а третий - дополнительный вызов xargs. С помощью флага -exec можно вызвать ls -l непосредственно из find:

find -name "*.conf" -exec ls -l {} +

Это дает полный список имен файлов в качестве аргументов ls -l и вызывает его как

Если вы просто хотите совместить все файлы, заканчивающиеся на .conf в и под текущим каталогом (и ARG_MAX не проблема !), вам вообще не нужно find. Вместо этого вы можете использовать привязку bash для сопоставления с параметрами оболочки globstar и dotglob следующим образом: это достаточно разумно, чтобы не ломать символы новой строки в именах файлов и не соответствует «скрытым» файлам, например find:

$ shopt -s globstar dotglob $ ls -l **/*.conf
3
ответ дан 17 July 2018 в 13:46

ls не получает свой список файлов со стандартного ввода, он ожидает, что они будут аргументами. Команда xargs является общим средством для ввода входных данных в аргументы:

find -name '*.conf' | xargs ls -l

Однако это приведет к разделению ввода в пробеле, так что у вас могут быть проблемы, если какое-либо из имен имеет пробелы. find и xargs имеют параметры, которые работают вместе, чтобы смягчить это:

find -name '*.conf' -print0 | xargs -0 ls -l

Параметр -0 в xargs сообщает ему использовать нулевой байт в качестве разделителя между параметрами ввода , и -print0 сообщает find печатать имена, разделенные нулевым байтом вместо новой строки.

2
ответ дан 17 July 2018 в 13:46

и другие ответы уже отмечали

как распечатать файл с find, использование -printf как получить ls выход с find, использование -ls как правильно трубы find с выхода в другую программу с помощью [F9] и

однако первый и второй подход не дает точного вывода ls -l (в -ls флаг равен ls -dils) и третье необходима дополнительная [от f13] звонок. С помощью -exec флаг это можно назвать ls -l непосредственно find:

find -name "*.conf" -exec ls -l {} +

. это дает целый список имен файлов в качестве аргументов [f17 в] и называет его как раз столько раз, сколько необходимо.

если вы просто хотите, чтобы соответствовать все файлы, заканчивающиеся в .conf, и в текущем каталоге (и [зг19] не проблема!), вы на самом деле не нужен [20 фунтов] на всех. Вместо этого вы можете использовать клавиши f21] с глоб соответствие с [f22 и ф23] оболочки параметры – это в равной степени достаточно мудрый, чтобы не сломать на переводы строк в именах файлов и игр “скрытые” файлы, такие как find:

$ shopt -s globstar dotglob $ ls -l **/*.conf
3
ответ дан 20 July 2018 в 13:51

ls не получает свой список файлов со стандартного ввода, он ожидает, что они будут аргументами. Команда xargs является общим средством для ввода входных данных в аргументы:

find -name '*.conf' | xargs ls -l

Однако это приведет к разделению ввода в пробеле, так что у вас могут быть проблемы, если какое-либо из имен имеет пробелы. find и xargs имеют параметры, которые работают вместе, чтобы смягчить это:

find -name '*.conf' -print0 | xargs -0 ls -l

Параметр -0 в xargs сообщает ему использовать нулевой байт в качестве разделителя между параметрами ввода , и -print0 сообщает find печатать имена, разделенные нулевым байтом вместо новой строки.

2
ответ дан 20 July 2018 в 13:51

Другие вопросы по тегам:

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