Подтвердить что ты не робот

Как найти файл/каталог, который может быть где угодно в командной строке linux?

В идеале я мог бы использовать такую ​​программу, как

find [file or directory name]

чтобы сообщить о путях с соответствующими именами файлов/каталогов. К сожалению, это похоже только на проверку текущего каталога, а не на всю папку.

Я также попытался найти и который, но никто не находит файл, хотя я знаю его на компьютере где-то.

4b9b3361

Ответ 1

"К сожалению, это похоже только на текущий каталог, а не на всю папку". Предположительно, вы имеете в виду, что он не выглядит в подкаталогах. Чтобы исправить это, используйте find -name "filename"

Если этот файл не находится в текущем рабочем каталоге, вы можете выполнить поиск всей машины через

find / -name "filename"

Это также работает с такими вещами, как find / -name "*.pdf" и т.д. Иногда мне нравится транслировать это в инструкцию grep (так как на моей машине по крайней мере она выделяет результаты), поэтому я получаю что-то вроде

find / -name "*star*wars*" | grep star

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

Ответ 2

Если вам нужно найти вложенные в некоторые разделы:

find / -type f -wholename "*dirname/filename"

Или подключенные каналы:

find / -type d -wholename "*foo/bar"

Ответ 3

Команда find займет много времени, самый быстрый способ поиска файла - использовать команду locate, которая ищет имена файлов (и путь) в индексированной базе данных (обновляется командой updatedb).

Результат сразу появится с помощью простой команды:

locate {file-name-or-path}

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

Более подробно здесь: https://medium.com/@thucnc/the-fastest-way-to-find-files-by-filename-mlocate-locate-commands-55bf40b297ab

Ответ 4

Чтобы избавиться от ошибок разрешения (и тому подобное), вы можете перенаправить stderr в никуда

find / -name "something" 2>/dev/null

Ответ 5

Приведенный ниже пример поможет найти конкретную папку в текущем каталоге. В этом примере выполняется поиск только по текущему каталогу, и он будет искать подкаталог, доступный в текущем каталоге.

#!/bin/bash

result=$(ls -d operational)

echo $result

test="operational"

if [ "$result" == "$test" ] 
then 
   echo "TRUE"
else
   echo "FALSE"
fi

Ответ 6

Если это командный файл, который вы ищете, самый быстрый и точный способ с

which "commandname"

Это покажет вам фактический файл, используемый для команды, даже если у вас есть много файлов с одинаковым именем в системе.