показанный все файлы на основе шаблона имени файла в текущем каталоге

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

Вы могли попытаться переключиться на драйвер с открытым исходным кодом: Изменение в Section "Device" строка Драйвера к Driver "nv" в /etc/X11/xorg.conf.

По крайней мере, это - то, где конфигурация хранится в моем Debian. Можно искать строку как это в файле журнала:

(==) Using config file: "/etc/X11/xorg.conf"
6
29.09.2016, 23:44
4 ответа
chown hadoop:hadoop ChownFileNames*
7
27.01.2020, 20:22

Это должно работать на то, в чем Вы нуждаетесь:

find . -maxdepth 1 -iname 'ChownFileNames*' -exec chown hadoop:hadoop -- {} . \;
5
27.01.2020, 20:22
  • 1
    намного лучше использовать \+ вместо \; в таких случаях. Это запустит один процесс на несколько файлов insted одного процесса на файл, поэтому задание будет сделано намного быстрее на большой сумме файлов. –  rush 20.06.2012, 16:01
  • 2
    намного лучше использовать \+ вместо \; в таких случаях. Это запустит один процесс на несколько файлов insted одного процесса на файл, поэтому задание будет сделано намного быстрее на большой сумме файлов. –  rush 20.06.2012, 16:01

| (“канал”) символ означает передавать вывод команды слева к команде справа. Команда find . -maxdepth 1 перечисляет файлы в текущем каталоге (плюс . самостоятельно). Команда grep 'ChownFileNames*' -exec chown hadoop:hadoop -- {} . \; не имеет никакого смысла: Вы являетесь передающими find опции к grep команда.

find самостоятельно имеет способ соответствовать именам файлов, -name предикат. Это берет подстановочный шаблон оболочки в качестве аргумента.

Вы могли использовать grep для фильтрации списка но необходимо было бы предоставить допустимую командную строку grep. Сохранить только имена файлов, соответствующие шаблону оболочки ChownFileNames*, необходимо было бы использовать регулярное выражение /ChownFileNames[^/]$. Затем необходимо было бы проанализировать вывод grep преобразовать список соответствия именам в параметры командной строки. Предположение, что Вы запускаете Linux и имена файлов, не содержит новых строк, Вы могли использовать xargs:

find . -maxdepth 1 |
grep '/ChownFileNames[^/]*$' |
xargs -d '\n' chown hadoop:hadoop

Это намного более просто и более устойчиво для использования find -exec действие. Обратите внимание, что можно использовать -exec … {} + выполнять команду для пакета файлов сразу вместо однажды на файл. Можно также сделать find перечислите текущий каталог.

find . maxdepth 1 \( -name . -o -name 'ChownFileNames*' \) -exec chown hadoop:hadoop {} +

В выполнении обычно нет никакого смысла find когда Вы только соответствуете файлам по имени (и не, например, по дате) в текущем каталоге (не пересекая подкаталоги). Если нет столько файлов в текущем каталоге, что это делает командную строку слишком долго, просто используйте

chown hadoop:hadoop . ChownFileNames*
4
27.01.2020, 20:22

Смотрите на -name или -iname опции в find(1)

0
27.01.2020, 20:22
  • 1
    И, особенно, - исполнительная опция :) –  Sergei Lomakov 20.06.2012, 14:32
  • 2
    И, особенно, - исполнительная опция :) –  Sergei Lomakov 20.06.2012, 14:32

Теги

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