Linux найти / найти корневой раздел ТОЛЬКО?

17

Скажи, что мне нужно сделать:

find / -name somefile.txt

и говорят, что корневой раздел /смонтирован на /dev/sda5; однако, допустим, у меня также есть разделы ( /dev/sda6, /dev/sda7) объемом 250 ГБ , подключенные в /media- И другое место, которое я не могу вспомнить в настоящее время. Скажем также, что я знаю, что файл, который я ищу, включен /dev/sda5.

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

Есть ли способ дать команду find (или другую команду) искать только / по /dev/sda5НЕ, а НЕ спускаться в каталоги, если они находятся в разных разделах?

sdaau
источник

Ответы:

30

Используйте -xdevаргумент, чтобы найти

-xdev Не спускать каталоги на другие файловые системы.

н.у.к.
источник
1
Большое спасибо - просто для справки, синтаксис будет такой: <pre> find / -xdev -name somefile.txt </ pre>
sdaau
1
Для пользователей Mac: найдите -x / -name somefile.txt
CodeReaper
1
Поиск страницы справочника --one-file-systemа-ля duмне тоже не помог. По крайней мере, они оба начинаются с того, что -xя полагаю. И это означает «перекрестные устройства», я думаю.
Шридхар Сарнобат
2

Стандарт POSIX определяет-xdev «первичный«:

это приведет к тому, что find не будет продолжать убывать прошлые каталоги, которые имеют другой идентификатор устройства

Это реализовано в GNU find(например, findutils ; docs ).
GNU findтакже позволяет использовать в -mountкачестве « альтернативного имени» -xdevдля совместимости с некоторыми другими версиями find. «

В системах BSD и macOS опция -xвместо этого. Они (imho запутанно) призывают -xdevбыть « осуждаемыми ». Вы можете, однако, использовать -mountвместо этого. [руководства по FreeBSD и macOS ]

другие инструменты, только к вашему сведению

Если вы используете ripgrep ( rg) как rg --files, вы можете использовать --one-file-systemопцию, которая делает то же самое, что и опция find-xdev .

myrdd
источник