Unix: Как составить список всех каталогов, содержащих название программы

-cminи -lsявляются предикатами , которые являются частью выражения , а не опциями.

Обратите внимание, что вы можете пометить конец опций с помощью --, но после него по-прежнему разрешены предикаты.

С GNU find, который позволяет пропускать пути:

find -- -L

Будет жаловаться на неизвестный -предикат L (, хотя -Lявляется допустимой опцией , которая на самом деле имеет -followэквивалентный предикат).

Поэтому пока

find "$file"

нравится

wc "$file"

работает неправильно, если $fileначинается с -.

Выполнение wc -- "$file"исправляет это для wc(, за исключением особого случая file='-'), но не для find -- "$file". FreeBSD findимеет для этого find -f "$file".

1
18.10.2019, 23:22
2 ответа

Используя findи dirname, чтобы найти все файлы с именем minecraftв текущем каталоге, (отрегулируйте место поиска в соответствии с ).

find. -type f -name minecraft | xargs -L 1 dirname

Для поиска файлов с разрешениями на выполнение вы можете использовать параметр -permдля поиска (настроить значение в соответствии с вашими критериями поиска):

find. -type f -perm +0111 -name minecraft | xargs -L 1 dirname

Это должно напечатать путь к каталогу относительно места поиска .

Если вы хотите выполнить поиск по всей системе, просто передайте /в качестве первого аргумента для поиска.

1
27.01.2020, 23:30

Если это Unix, вы можете ввести «какой Minecraft». Если это Windows, вы можете ввести «где Minecraft». Добавьте --all к команде which, чтобы вывести список всех программ, а не только первую. Обе программы ищут ПУТЬ или, в случае Windows, путь плюс определенное время выполнения места регистрации.

Чтобы найти программы вне пути, выполните описанную выше команду find, но добавьте --perm, чтобы указать исполняемый файл. Добавьте --тип f, чтобы ограничить его файлами. В древние времена существовала команда slocate, которая выполняет поиск по индексу.

1
27.01.2020, 23:30

Теги

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