[{"data":1,"prerenderedAt":-1},["ShallowReactive",2],{"page-ru-/guides/linux/find-file":3,"mdc--cwmmdz-key":2116,"mdc-7rjsio-key":2146,"mdc--3cuw6w-key":2177,"mdc--m5qrn1-key":2214,"mdc--v1qrqu-key":2252,"mdc--93z7h3-key":2291,"mdc--jw3hn4-key":2338,"mdc-7ntz4s-key":2404,"mdc-cp2f7r-key":2453,"mdc--53clgz-key":2484,"related-/guides/linux/grep-search-content,/guides/linux/file-permissions-chmod,/errors/linux/permission-denied":2508},{"id":4,"title":5,"appliesTo":6,"author":11,"body":12,"canonical":2047,"code":2047,"createdAt":2048,"description":2049,"difficulty":2050,"draft":2051,"estimatedTime":2052,"extension":2053,"faq":2054,"howToSteps":2067,"howToTotalTime":2086,"image":2047,"keywords":2087,"locale":2098,"meta":2099,"navigation":163,"path":2100,"platform":2101,"related":2102,"section":2106,"seo":2107,"severity":2047,"stem":2108,"summary":2109,"tags":2110,"twitterCreator":2047,"twitterSite":2047,"type":2114,"updatedAt":2048,"__hash__":2115},"content_ru/guides/linux/find-file.md","Как найти файл в Linux: полное руководство по команде find",[7,8,9,10],"Linux (все дистрибутивы)","Bash/Zsh","findutils 4.5+","util-linux 2.25+","FixPedia Team",{"type":13,"value":14,"toc":2019},"minimark",[15,20,37,40,63,67,237,241,248,254,266,310,323,341,361,365,376,399,403,410,442,450,473,477,480,505,522,551,568,593,673,677,684,709,712,729,734,751,756,777,781,791,826,831,861,871,891,896,962,965,969,974,1026,1038,1056,1059,1075,1080,1094,1103,1121,1125,1134,1148,1242,1255,1301,1312,1342,1350,1357,1366,1405,1414,1426,1442,1450,1457,1533,1542,1554,1559,1581,1585,1595,1641,1645,1652,1657,1706,1712,1716,1769,1773,1783,1801,1804,1827,1834,1869,1875,1884,1909,1918,1922,1941,2003,2015],[16,17,19],"h2",{"id":18},"введение-зачем-это-нужно","Введение / Зачем это нужно",[21,22,23,24,28,29,32,33,36],"p",{},"Поиск файлов в Linux — одна из самых частых задач для системного администратора, разработчика и обычного пользователя. Вместо графического браузера вы используете мощную командную строку, которая позволяет находить файлы по любому критерию: имени, размеру, дате, содержимому или правам доступа. Этот гайд научит вас эффективно использовать утилиты ",[25,26,27],"code",{},"find",", ",[25,30,31],{},"locate"," и ",[25,34,35],{},"fd"," для решения повседневных задач, от простого \"где мой конфиг?\" до поиска gigabyte-файлов, заполняющих диск.",[21,38,39],{},"После прохождения вы сможете:",[41,42,43,47,50,53],"ul",{},[44,45,46],"li",{},"Быстро находить файлы по имени с помощью масок.",[44,48,49],{},"Искать файлы по размеру и дате, чтобы освободить место.",[44,51,52],{},"Находить исполняемые файлы или файлы с определёнными правами.",[44,54,55,56,28,58,28,60,62],{},"Выбирать правильный инструмент (",[25,57,27],{},[25,59,31],{},[25,61,35],{},") для каждой ситуации.",[16,64,66],{"id":65},"требования-подготовка","Требования / Подготовка",[68,69,70,77,90,107],"ol",{},[44,71,72,76],{},[73,74,75],"strong",{},"Доступ к терминалу Linux"," (любой дистрибутив: Ubuntu, CentOS, Arch, Fedora и т.д.).",[44,78,79,82,83,28,86,89],{},[73,80,81],{},"Базовые знания навигации"," (",[25,84,85],{},"cd",[25,87,88],{},"ls",").",[44,91,92,95,96,28,99,102,103,106],{},[73,93,94],{},"Права на чтение каталогов",", в которых будете искать. Для системных каталогов (",[25,97,98],{},"/etc",[25,100,101],{},"/var",") может потребоваться ",[25,104,105],{},"sudo",".",[44,108,109,110,112,113,230,231,234,235,106],{},"Для утилиты ",[25,111,35],{}," (опционально, но рекомендуется):\n",[114,115,120],"pre",{"className":116,"code":117,"language":118,"meta":119,"style":119},"language-bash shiki shiki-themes github-light github-dark","# Ubuntu/Debian\nsudo apt update && sudo apt install fd-find\n\n# Fedora\nsudo dnf install fd-find\n\n# Arch Linux\nsudo pacman -S fd\n\n# macOS (brew)\nbrew install fd\n","bash","",[25,121,122,131,158,165,171,183,188,194,209,214,220],{"__ignoreMap":119},[123,124,127],"span",{"class":125,"line":126},"line",1,[123,128,130],{"class":129},"sJ8bj","# Ubuntu/Debian\n",[123,132,134,137,141,144,148,150,152,155],{"class":125,"line":133},2,[123,135,105],{"class":136},"sScJk",[123,138,140],{"class":139},"sZZnC"," apt",[123,142,143],{"class":139}," update",[123,145,147],{"class":146},"sVt8B"," && ",[123,149,105],{"class":136},[123,151,140],{"class":139},[123,153,154],{"class":139}," install",[123,156,157],{"class":139}," fd-find\n",[123,159,161],{"class":125,"line":160},3,[123,162,164],{"emptyLinePlaceholder":163},true,"\n",[123,166,168],{"class":125,"line":167},4,[123,169,170],{"class":129},"# Fedora\n",[123,172,174,176,179,181],{"class":125,"line":173},5,[123,175,105],{"class":136},[123,177,178],{"class":139}," dnf",[123,180,154],{"class":139},[123,182,157],{"class":139},[123,184,186],{"class":125,"line":185},6,[123,187,164],{"emptyLinePlaceholder":163},[123,189,191],{"class":125,"line":190},7,[123,192,193],{"class":129},"# Arch Linux\n",[123,195,197,199,202,206],{"class":125,"line":196},8,[123,198,105],{"class":136},[123,200,201],{"class":139}," pacman",[123,203,205],{"class":204},"sj4cs"," -S",[123,207,208],{"class":139}," fd\n",[123,210,212],{"class":125,"line":211},9,[123,213,164],{"emptyLinePlaceholder":163},[123,215,217],{"class":125,"line":216},10,[123,218,219],{"class":129},"# macOS (brew)\n",[123,221,223,226,228],{"class":125,"line":222},11,[123,224,225],{"class":136},"brew",[123,227,154],{"class":139},[123,229,208],{"class":139},"\nПосле установки команда может называться ",[25,232,233],{},"fdfind"," (в Debian/Ubuntu) или ",[25,236,35],{},[16,238,240],{"id":239},"пошаговая-инструкция","Пошаговая инструкция",[242,243,245,246],"h3",{"id":244},"шаг-1-базовый-синтаксис-команды-find","Шаг 1: Базовый синтаксис команды ",[25,247,27],{},[21,249,250,251,253],{},"Команда ",[25,252,27],{}," имеет универсальный синтаксис:",[114,255,257],{"className":116,"code":256,"language":118,"meta":119,"style":119},"find [путь_для_поиска] [критерий] [действие]\n",[25,258,259],{"__ignoreMap":119},[123,260,261,263],{"class":125,"line":126},[123,262,27],{"class":136},[123,264,265],{"class":146}," [путь_для_поиска] [критерий] [действие]\n",[41,267,268,283,299],{},[44,269,270,275,276,278,279,282],{},[73,271,272],{},[25,273,274],{},"[путь_для_поиска]",": Каталог, начиная с которого искать (",[25,277,106],{}," — текущая папка, ",[25,280,281],{},"/"," — корень системы).",[44,284,285,290,291,294,295,298],{},[73,286,287],{},[25,288,289],{},"[критерий]",": Условие для поиска (имя, размер, дата и т.д.). Можно комбинировать через ",[25,292,293],{},"-a"," (И) или ",[25,296,297],{},"-o"," (ИЛИ).",[44,300,301,306,307,309],{},[73,302,303],{},[25,304,305],{},"[действие]",": Что делать с найденными файлами. Если не указать, ",[25,308,27],{}," просто выведет пути.",[21,311,312,315,316,319,320,322],{},[73,313,314],{},"Пример:"," Найти все файлы с расширением ",[25,317,318],{},".conf"," в ",[25,321,98],{}," и его подкаталогах.",[114,324,326],{"className":116,"code":325,"language":118,"meta":119,"style":119},"find /etc -name \"*.conf\"\n",[25,327,328],{"__ignoreMap":119},[123,329,330,332,335,338],{"class":125,"line":126},[123,331,27],{"class":136},[123,333,334],{"class":139}," /etc",[123,336,337],{"class":204}," -name",[123,339,340],{"class":139}," \"*.conf\"\n",[342,343,344],"blockquote",{},[21,345,346,347,350,351,354,355,358,359,106],{},"💡 ",[73,348,349],{},"Совет",": Всегда заключайте шаблон в кавычки (",[25,352,353],{},"\""," или ",[25,356,357],{},"'","), чтобы shell не пытался его раскрывать до передачи ",[25,360,27],{},[242,362,364],{"id":363},"шаг-2-поиск-по-имени-с-учётом-регистра","Шаг 2: Поиск по имени с учётом регистра",[21,366,367,368,371,372,375],{},"По умолчанию ",[25,369,370],{},"-name"," чувствителен к регистру. Для регистронезависимого поиска используйте ",[25,373,374],{},"-iname",":",[114,377,379],{"className":116,"code":378,"language":118,"meta":119,"style":119},"# Найти Readme.md, README.md, readme.MD\nfind /путь/к/проекту -iname \"readme.md\"\n",[25,380,381,386],{"__ignoreMap":119},[123,382,383],{"class":125,"line":126},[123,384,385],{"class":129},"# Найти Readme.md, README.md, readme.MD\n",[123,387,388,390,393,396],{"class":125,"line":133},[123,389,27],{"class":136},[123,391,392],{"class":139}," /путь/к/проекту",[123,394,395],{"class":204}," -iname",[123,397,398],{"class":139}," \"readme.md\"\n",[242,400,402],{"id":401},"шаг-3-поиск-по-типу-файла","Шаг 3: Поиск по типу файла",[21,404,405,406,409],{},"Используйте ",[25,407,408],{},"-type"," для фильтрации по типу объекта файловой системы:",[41,411,412,418,424,430,436],{},[44,413,414,417],{},[25,415,416],{},"f"," — обычный файл",[44,419,420,423],{},[25,421,422],{},"d"," — каталог",[44,425,426,429],{},[25,427,428],{},"l"," — символьная ссылка",[44,431,432,435],{},[25,433,434],{},"c"," — символьное устройство",[44,437,438,441],{},[25,439,440],{},"b"," — блочное устройство",[21,443,444,446,447,375],{},[73,445,314],{}," Найти только каталоги с именем ",[25,448,449],{},"logs",[114,451,453],{"className":116,"code":452,"language":118,"meta":119,"style":119},"find / -type d -name \"logs\"\n",[25,454,455],{"__ignoreMap":119},[123,456,457,459,462,465,468,470],{"class":125,"line":126},[123,458,27],{"class":136},[123,460,461],{"class":139}," /",[123,463,464],{"class":204}," -type",[123,466,467],{"class":139}," d",[123,469,337],{"class":204},[123,471,472],{"class":139}," \"logs\"\n",[242,474,476],{"id":475},"шаг-4-комбинирование-критериев-логические-операторы","Шаг 4: Комбинирование критериев (Логические операторы)",[21,478,479],{},"Для сложных запросов объединяйте условия:",[41,481,482,491,496],{},[44,483,484,486,487,490],{},[25,485,293],{}," (И) — ",[73,488,489],{},"по умолчанию",", если условия идут подряд.",[44,492,493,495],{},[25,494,297],{}," (ИЛИ) — альтернатива.",[44,497,498,354,501,504],{},[25,499,500],{},"!",[25,502,503],{},"-not"," — отрицание.",[21,506,507,509,510,513,514,517,518,521],{},[73,508,314],{}," Найти все ",[25,511,512],{},".log"," файлы в ",[25,515,516],{},"/var/log",", размер которых больше 10 МБ ",[73,519,520],{},"И"," изменявшиеся за последние 7 дней:",[114,523,525],{"className":116,"code":524,"language":118,"meta":119,"style":119},"find /var/log -name \"*.log\" -size +10M -mtime -7\n",[25,526,527],{"__ignoreMap":119},[123,528,529,531,534,536,539,542,545,548],{"class":125,"line":126},[123,530,27],{"class":136},[123,532,533],{"class":139}," /var/log",[123,535,337],{"class":204},[123,537,538],{"class":139}," \"*.log\"",[123,540,541],{"class":204}," -size",[123,543,544],{"class":139}," +10M",[123,546,547],{"class":204}," -mtime",[123,549,550],{"class":204}," -7\n",[21,552,553,556,557,560,561,560,564,567],{},[73,554,555],{},"Пример 2:"," Найти файлы с расширением ",[25,558,559],{},".tmp"," ",[73,562,563],{},"ИЛИ",[25,565,566],{},".temp"," в домашнем каталоге:",[114,569,571],{"className":116,"code":570,"language":118,"meta":119,"style":119},"find ~ -name \"*.tmp\" -o -name \"*.temp\"\n",[25,572,573],{"__ignoreMap":119},[123,574,575,577,580,582,585,588,590],{"class":125,"line":126},[123,576,27],{"class":136},[123,578,579],{"class":139}," ~",[123,581,337],{"class":204},[123,583,584],{"class":139}," \"*.tmp\"",[123,586,587],{"class":204}," -o",[123,589,337],{"class":204},[123,591,592],{"class":139}," \"*.temp\"\n",[342,594,595,623],{},[21,596,597,598,601,602,604,605,608,609,612,613,616,617,354,620,375],{},"⚠️ ",[73,599,600],{},"Важно",": При использовании ",[25,603,297],{}," часто нужно группировать условия скобками ",[25,606,607],{},"\\( ... \\)",", чтобы задать приоритет. Например, ищем ",[25,610,611],{},".bak"," файлы ",[73,614,615],{},"ВЛОЖЕННЫЕ"," в каталогах ",[25,618,619],{},"cache",[25,621,622],{},"temp",[114,624,626],{"className":116,"code":625,"language":118,"meta":119,"style":119},"find / -type d \\( -name \"cache\" -o -name \"temp\" \\) -exec find {} -name \"*.bak\" \\;\n",[25,627,628],{"__ignoreMap":119},[123,629,630,632,634,636,638,641,643,646,648,650,653,656,659,662,665,667,670],{"class":125,"line":126},[123,631,27],{"class":136},[123,633,461],{"class":139},[123,635,464],{"class":204},[123,637,467],{"class":139},[123,639,640],{"class":204}," \\(",[123,642,337],{"class":204},[123,644,645],{"class":139}," \"cache\"",[123,647,587],{"class":204},[123,649,337],{"class":204},[123,651,652],{"class":139}," \"temp\"",[123,654,655],{"class":204}," \\)",[123,657,658],{"class":204}," -exec",[123,660,661],{"class":139}," find",[123,663,664],{"class":139}," {}",[123,666,337],{"class":204},[123,668,669],{"class":139}," \"*.bak\"",[123,671,672],{"class":204}," \\;\n",[242,674,676],{"id":675},"шаг-5-поиск-по-размеру-файла","Шаг 5: Поиск по размеру файла",[21,678,679,680,683],{},"Опция ",[25,681,682],{},"-size"," использует суффиксы:",[41,685,686,691,697,703],{},[44,687,688,690],{},[25,689,434],{}," — байты",[44,692,693,696],{},[25,694,695],{},"k"," — килобайты (1024 байта)",[44,698,699,702],{},[25,700,701],{},"M"," — мегабайты",[44,704,705,708],{},[25,706,707],{},"G"," — гигабайты",[21,710,711],{},"Знаки:",[41,713,714,720,726],{},[44,715,716,719],{},[25,717,718],{},"+"," — больше указанного",[44,721,722,725],{},[25,723,724],{},"-"," — меньше указанного",[44,727,728],{},"Нет знака — точное совпадение (редко используется)",[21,730,731,733],{},[73,732,314],{}," Найти файлы, занимающие ровно 0 байт (пустые):",[114,735,737],{"className":116,"code":736,"language":118,"meta":119,"style":119},"find /tmp -size 0c\n",[25,738,739],{"__ignoreMap":119},[123,740,741,743,746,748],{"class":125,"line":126},[123,742,27],{"class":136},[123,744,745],{"class":139}," /tmp",[123,747,541],{"class":204},[123,749,750],{"class":139}," 0c\n",[21,752,753,755],{},[73,754,314],{}," Найти файлы от 500 МБ до 2 ГБ:",[114,757,759],{"className":116,"code":758,"language":118,"meta":119,"style":119},"find / -size +500M -size -2G\n",[25,760,761],{"__ignoreMap":119},[123,762,763,765,767,769,772,774],{"class":125,"line":126},[123,764,27],{"class":136},[123,766,461],{"class":139},[123,768,541],{"class":204},[123,770,771],{"class":139}," +500M",[123,773,541],{"class":204},[123,775,776],{"class":204}," -2G\n",[242,778,780],{"id":779},"шаг-6-поиск-по-дате-и-времени","Шаг 6: Поиск по дате и времени",[21,782,783,785,786,790],{},[25,784,27],{}," работает с ",[787,788,789],"em",{},"днями"," (не часами) по умолчанию. Есть три основных критерия:",[41,792,793,807,817],{},[44,794,795,798,799,802,803,806],{},[25,796,797],{},"-mtime N"," — когда ",[73,800,801],{},"содержимое"," файла было изменено N ",[787,804,805],{},"дняй"," назад.",[44,808,809,812,813,816],{},[25,810,811],{},"-atime N"," — когда файл был ",[73,814,815],{},"доступен"," (прочитан, выполнен) N дней назад.",[44,818,819,798,822,825],{},[25,820,821],{},"-ctime N",[73,823,824],{},"метаданные"," (права, владелец) были изменены N дней назад.",[21,827,828],{},[73,829,830],{},"Пояснение про дни:",[41,832,833,843,852],{},[44,834,835,838,839,842],{},[25,836,837],{},"-mtime 0"," — изменялось ",[73,840,841],{},"сегодня"," (в последние 24 часа).",[44,844,845,838,848,851],{},[25,846,847],{},"-mtime -1",[73,849,850],{},"менее 24 часов назад"," (аналог \"вчера и сегодня\").",[44,853,854,838,857,860],{},[25,855,856],{},"-mtime +1",[73,858,859],{},"более 48 часов назад"," (старше 2 дней).",[21,862,863,864,32,867,870],{},"Для поиска по ",[73,865,866],{},"часам",[73,868,869],{},"минутам"," используйте:",[41,872,873,879,885],{},[44,874,875,878],{},[25,876,877],{},"-mmin N"," — минуты с последнего изменения.",[44,880,881,884],{},[25,882,883],{},"-amin N"," — минуты с последнего доступа.",[44,886,887,890],{},[25,888,889],{},"-cmin N"," — минуты с последнего изменения метаданных.",[21,892,893],{},[73,894,895],{},"Практические примеры:",[114,897,899],{"className":116,"code":898,"language":118,"meta":119,"style":119},"# Найти все файлы, изменённые за последние 2 часа (120 минут)\nfind /var/www -mmin -120\n\n# Найти файлы, к которым не обращались более 30 дней (возможно, можно архивировать)\nfind /home -atime +30\n\n# Найти файлы, созданные вчера (примерно 24-48 часов назад)\nfind /backup -mtime 1\n",[25,900,901,906,919,923,928,941,945,950],{"__ignoreMap":119},[123,902,903],{"class":125,"line":126},[123,904,905],{"class":129},"# Найти все файлы, изменённые за последние 2 часа (120 минут)\n",[123,907,908,910,913,916],{"class":125,"line":133},[123,909,27],{"class":136},[123,911,912],{"class":139}," /var/www",[123,914,915],{"class":204}," -mmin",[123,917,918],{"class":204}," -120\n",[123,920,921],{"class":125,"line":160},[123,922,164],{"emptyLinePlaceholder":163},[123,924,925],{"class":125,"line":167},[123,926,927],{"class":129},"# Найти файлы, к которым не обращались более 30 дней (возможно, можно архивировать)\n",[123,929,930,932,935,938],{"class":125,"line":173},[123,931,27],{"class":136},[123,933,934],{"class":139}," /home",[123,936,937],{"class":204}," -atime",[123,939,940],{"class":139}," +30\n",[123,942,943],{"class":125,"line":185},[123,944,164],{"emptyLinePlaceholder":163},[123,946,947],{"class":125,"line":190},[123,948,949],{"class":129},"# Найти файлы, созданные вчера (примерно 24-48 часов назад)\n",[123,951,952,954,957,959],{"class":125,"line":196},[123,953,27],{"class":136},[123,955,956],{"class":139}," /backup",[123,958,547],{"class":204},[123,960,961],{"class":204}," 1\n",[963,964],"in-article-ad",{},[242,966,968],{"id":967},"шаг-7-поиск-по-правам-доступа-и-владельцу","Шаг 7: Поиск по правам доступа и владельцу",[21,970,971],{},[73,972,973],{},"По правам (perm):",[41,975,976,985,1007],{},[44,977,978,981,982,89],{},[25,979,980],{},"-perm mode"," — точное совпадение прав (например, ",[25,983,984],{},"-perm 644",[44,986,987,990,991,994,995,998,999,1002,1003,1006],{},[25,988,989],{},"-perm -mode"," — ",[73,992,993],{},"все"," биты из ",[25,996,997],{},"mode"," должны быть установлены (логическое И). Например, ",[25,1000,1001],{},"-perm -u=x"," найдёт файлы, у которых ",[73,1004,1005],{},"владелец"," имеет право на выполнение, независимо от других прав.",[44,1008,1009,990,1012,1015,1016,1018,1019,1022,1023,1025],{},[25,1010,1011],{},"-perm /mode",[73,1013,1014],{},"хотя бы один"," бит из ",[25,1017,997],{}," установлен (логическое ИЛИ). Например, ",[25,1020,1021],{},"-perm /u=x,g=w"," найдёт файлы, где владелец может выполнять ",[73,1024,563],{}," группа может писать.",[21,1027,1028,1030,1031,1034,1035,375],{},[73,1029,314],{}," Найти все исполняемые файлы (",[25,1032,1033],{},"x"," для кого-либо) в ",[25,1036,1037],{},"/usr/bin",[114,1039,1041],{"className":116,"code":1040,"language":118,"meta":119,"style":119},"find /usr/bin -perm /111\n",[25,1042,1043],{"__ignoreMap":119},[123,1044,1045,1047,1050,1053],{"class":125,"line":126},[123,1046,27],{"class":136},[123,1048,1049],{"class":139}," /usr/bin",[123,1051,1052],{"class":204}," -perm",[123,1054,1055],{"class":139}," /111\n",[21,1057,1058],{},"Или, что то же самое:",[114,1060,1062],{"className":116,"code":1061,"language":118,"meta":119,"style":119},"find /usr/bin -perm /a=x\n",[25,1063,1064],{"__ignoreMap":119},[123,1065,1066,1068,1070,1072],{"class":125,"line":126},[123,1067,27],{"class":136},[123,1069,1049],{"class":139},[123,1071,1052],{"class":204},[123,1073,1074],{"class":139}," /a=x\n",[21,1076,1077],{},[73,1078,1079],{},"По владельцу/группе:",[41,1081,1082,1088],{},[44,1083,1084,1087],{},[25,1085,1086],{},"-user username"," — файлы, принадлежащие пользователю.",[44,1089,1090,1093],{},[25,1091,1092],{},"-group groupname"," — файлы, принадлежащие группе.",[21,1095,1096,1098,1099,1102],{},[73,1097,314],{}," Найти все файлы, принадлежащие пользователю ",[25,1100,1101],{},"www-data"," (часто для веб-серверов):",[114,1104,1106],{"className":116,"code":1105,"language":118,"meta":119,"style":119},"find /var -user www-data\n",[25,1107,1108],{"__ignoreMap":119},[123,1109,1110,1112,1115,1118],{"class":125,"line":126},[123,1111,27],{"class":136},[123,1113,1114],{"class":139}," /var",[123,1116,1117],{"class":204}," -user",[123,1119,1120],{"class":139}," www-data\n",[242,1122,1124],{"id":1123},"шаг-8-выполнение-действий-с-найденными-файлами","Шаг 8: Выполнение действий с найденными файлами",[21,1126,1127,1128,354,1131,106],{},"Критерии поиска часто комбинируют с действиями через ",[25,1129,1130],{},"-exec",[25,1132,1133],{},"-delete",[21,1135,1136,1140,1141,1144,1145,106],{},[73,1137,1138],{},[25,1139,1130],{},": Выполняет указанную команду для каждого найденного файла. ",[25,1142,1143],{},"{}"," заменяется на имя файла. Завершается ",[25,1146,1147],{},"\\;",[114,1149,1151],{"className":116,"code":1150,"language":118,"meta":119,"style":119},"# Найти все .tmp файлы и удалить их (ОСТОРОЖНО!)\nfind /tmp -name \"*.tmp\" -exec rm {} \\;\n\n# Найти все .log файлы и сжать их gzip\nfind /var/log -name \"*.log\" -exec gzip {} \\;\n\n# Найти файлы, доступные для записи группе, и вывести их права\nfind / -type f -perm -g=w -exec ls -l {} \\;\n",[25,1152,1153,1158,1177,1181,1186,1205,1209,1214],{"__ignoreMap":119},[123,1154,1155],{"class":125,"line":126},[123,1156,1157],{"class":129},"# Найти все .tmp файлы и удалить их (ОСТОРОЖНО!)\n",[123,1159,1160,1162,1164,1166,1168,1170,1173,1175],{"class":125,"line":133},[123,1161,27],{"class":136},[123,1163,745],{"class":139},[123,1165,337],{"class":204},[123,1167,584],{"class":139},[123,1169,658],{"class":204},[123,1171,1172],{"class":139}," rm",[123,1174,664],{"class":139},[123,1176,672],{"class":204},[123,1178,1179],{"class":125,"line":160},[123,1180,164],{"emptyLinePlaceholder":163},[123,1182,1183],{"class":125,"line":167},[123,1184,1185],{"class":129},"# Найти все .log файлы и сжать их gzip\n",[123,1187,1188,1190,1192,1194,1196,1198,1201,1203],{"class":125,"line":173},[123,1189,27],{"class":136},[123,1191,533],{"class":139},[123,1193,337],{"class":204},[123,1195,538],{"class":139},[123,1197,658],{"class":204},[123,1199,1200],{"class":139}," gzip",[123,1202,664],{"class":139},[123,1204,672],{"class":204},[123,1206,1207],{"class":125,"line":185},[123,1208,164],{"emptyLinePlaceholder":163},[123,1210,1211],{"class":125,"line":190},[123,1212,1213],{"class":129},"# Найти файлы, доступные для записи группе, и вывести их права\n",[123,1215,1216,1218,1220,1222,1225,1227,1230,1232,1235,1238,1240],{"class":125,"line":196},[123,1217,27],{"class":136},[123,1219,461],{"class":139},[123,1221,464],{"class":204},[123,1223,1224],{"class":139}," f",[123,1226,1052],{"class":204},[123,1228,1229],{"class":204}," -g=w",[123,1231,658],{"class":204},[123,1233,1234],{"class":139}," ls",[123,1236,1237],{"class":204}," -l",[123,1239,664],{"class":139},[123,1241,672],{"class":204},[21,1243,1244,1248,1249,1252,1253,106],{},[73,1245,1246],{},[25,1247,1133],{},": Удаляет найденные файлы. ",[73,1250,1251],{},"Будьте предельно осторожны!"," Сначала проверьте результат без ",[25,1254,1133],{},[114,1256,1258],{"className":116,"code":1257,"language":118,"meta":119,"style":119},"# Безопасный способ: сначала посмотреть, что будет удалено\nfind /tmp -name \"*.cache\" -ls\n\n# Затем, если всё верно, удалить\nfind /tmp -name \"*.cache\" -delete\n",[25,1259,1260,1265,1279,1283,1288],{"__ignoreMap":119},[123,1261,1262],{"class":125,"line":126},[123,1263,1264],{"class":129},"# Безопасный способ: сначала посмотреть, что будет удалено\n",[123,1266,1267,1269,1271,1273,1276],{"class":125,"line":133},[123,1268,27],{"class":136},[123,1270,745],{"class":139},[123,1272,337],{"class":204},[123,1274,1275],{"class":139}," \"*.cache\"",[123,1277,1278],{"class":204}," -ls\n",[123,1280,1281],{"class":125,"line":160},[123,1282,164],{"emptyLinePlaceholder":163},[123,1284,1285],{"class":125,"line":167},[123,1286,1287],{"class":129},"# Затем, если всё верно, удалить\n",[123,1289,1290,1292,1294,1296,1298],{"class":125,"line":173},[123,1291,27],{"class":136},[123,1293,745],{"class":139},[123,1295,337],{"class":204},[123,1297,1275],{"class":139},[123,1299,1300],{"class":204}," -delete\n",[21,1302,1303,1308,1309,1311],{},[73,1304,1305],{},[25,1306,1307],{},"-ok",": Аналог ",[25,1310,1130],{},", но запрашивает подтверждение перед выполнением каждой команды.",[114,1313,1315],{"className":116,"code":1314,"language":118,"meta":119,"style":119},"find . -name \"*.bak\" -ok rm {} \\;\n# Будет спрошено: \u003C rm ... > ? (y/n)\n",[25,1316,1317,1337],{"__ignoreMap":119},[123,1318,1319,1321,1324,1326,1328,1331,1333,1335],{"class":125,"line":126},[123,1320,27],{"class":136},[123,1322,1323],{"class":139}," .",[123,1325,337],{"class":204},[123,1327,669],{"class":139},[123,1329,1330],{"class":204}," -ok",[123,1332,1172],{"class":139},[123,1334,664],{"class":139},[123,1336,672],{"class":204},[123,1338,1339],{"class":125,"line":133},[123,1340,1341],{"class":129},"# Будет спрошено: \u003C rm ... > ? (y/n)\n",[242,1343,1345,1346,32,1348],{"id":1344},"шаг-9-альтернативы-locate-и-fd","Шаг 9: Альтернативы: ",[25,1347,31],{},[25,1349,35],{},[1351,1352,1354,1356],"h4",{"id":1353},"locate-быстрый-поиск-по-базе-данных",[25,1355,31],{}," — быстрый поиск по базе данных",[21,1358,1359,1360,1362,1363,89],{},"Работает в разы быстрее ",[25,1361,27],{},", так как ищет не в файловой системе, а в обновляемой раз в сутки базе данных (",[25,1364,1365],{},"/var/lib/mlocate/mlocate.db",[114,1367,1369],{"className":116,"code":1368,"language":118,"meta":119,"style":119},"locate имя_файла      # Простой поиск\nlocate -i имя_файла   # Без учёта регистра\nlocate -c имя_файла   # Только количество найденных файлов\n",[25,1370,1371,1381,1393],{"__ignoreMap":119},[123,1372,1373,1375,1378],{"class":125,"line":126},[123,1374,31],{"class":136},[123,1376,1377],{"class":139}," имя_файла",[123,1379,1380],{"class":129},"      # Простой поиск\n",[123,1382,1383,1385,1388,1390],{"class":125,"line":133},[123,1384,31],{"class":136},[123,1386,1387],{"class":204}," -i",[123,1389,1377],{"class":139},[123,1391,1392],{"class":129},"   # Без учёта регистра\n",[123,1394,1395,1397,1400,1402],{"class":125,"line":160},[123,1396,31],{"class":136},[123,1398,1399],{"class":204}," -c",[123,1401,1377],{"class":139},[123,1403,1404],{"class":129},"   # Только количество найденных файлов\n",[21,1406,1407,1410,1411,1413],{},[73,1408,1409],{},"Обновление базы вручную"," (требует ",[25,1412,105],{},"):",[114,1415,1417],{"className":116,"code":1416,"language":118,"meta":119,"style":119},"sudo updatedb\n",[25,1418,1419],{"__ignoreMap":119},[123,1420,1421,1423],{"class":125,"line":126},[123,1422,105],{"class":136},[123,1424,1425],{"class":139}," updatedb\n",[342,1427,1428],{},[21,1429,597,1430,1432,1433,1435,1436,1439,1440,106],{},[73,1431,600],{},": ",[25,1434,31],{}," не видит файлы, созданные после последнего ",[25,1437,1438],{},"updatedb",". Для поиска совсем новых файлов используйте ",[25,1441,27],{},[1351,1443,1445,1447,1448],{"id":1444},"fd-современная-быстрая-и-удобная-замена-find",[25,1446,35],{}," — современная, быстрая и удобная замена ",[25,1449,27],{},[21,1451,1452,1453,1456],{},"Упрощённый синтаксис, цветной вывод, игнорирование файлов из ",[25,1454,1455],{},".gitignore"," по умолчанию.",[114,1458,1460],{"className":116,"code":1459,"language":118,"meta":119,"style":119},"fd шаблон             # Ищет в текущей директории (рекурсивно)\nfd -e js              # Ищет файлы с расширением .js\nfd -g '*.py'          # Глобbing-шаблон (как в shell)\nfd -s +1M             # По размеру (больше 1 МБ)\nfd -t f               # Только файлы (-t d для каталогов)\nfd -I                 # Не игнорировать скрытые файлы (.gitignore по умолчанию)\n",[25,1461,1462,1472,1485,1498,1511,1523],{"__ignoreMap":119},[123,1463,1464,1466,1469],{"class":125,"line":126},[123,1465,35],{"class":136},[123,1467,1468],{"class":139}," шаблон",[123,1470,1471],{"class":129},"             # Ищет в текущей директории (рекурсивно)\n",[123,1473,1474,1476,1479,1482],{"class":125,"line":133},[123,1475,35],{"class":136},[123,1477,1478],{"class":204}," -e",[123,1480,1481],{"class":139}," js",[123,1483,1484],{"class":129},"              # Ищет файлы с расширением .js\n",[123,1486,1487,1489,1492,1495],{"class":125,"line":160},[123,1488,35],{"class":136},[123,1490,1491],{"class":204}," -g",[123,1493,1494],{"class":139}," '*.py'",[123,1496,1497],{"class":129},"          # Глобbing-шаблон (как в shell)\n",[123,1499,1500,1502,1505,1508],{"class":125,"line":167},[123,1501,35],{"class":136},[123,1503,1504],{"class":204}," -s",[123,1506,1507],{"class":139}," +1M",[123,1509,1510],{"class":129},"             # По размеру (больше 1 МБ)\n",[123,1512,1513,1515,1518,1520],{"class":125,"line":173},[123,1514,35],{"class":136},[123,1516,1517],{"class":204}," -t",[123,1519,1224],{"class":139},[123,1521,1522],{"class":129},"               # Только файлы (-t d для каталогов)\n",[123,1524,1525,1527,1530],{"class":125,"line":185},[123,1526,35],{"class":136},[123,1528,1529],{"class":204}," -I",[123,1531,1532],{"class":129},"                 # Не игнорировать скрытые файлы (.gitignore по умолчанию)\n",[21,1534,1535,1537,1538,1541],{},[73,1536,314],{}," Найти все файлы ",[25,1539,1540],{},"Dockerfile"," (с учётом регистра) в проекте:",[114,1543,1545],{"className":116,"code":1544,"language":118,"meta":119,"style":119},"fd Dockerfile\n",[25,1546,1547],{"__ignoreMap":119},[123,1548,1549,1551],{"class":125,"line":126},[123,1550,35],{"class":136},[123,1552,1553],{"class":139}," Dockerfile\n",[21,1555,1556,1558],{},[73,1557,314],{}," Найти Python-файлы, изменённые за последние неделю:",[114,1560,1562],{"className":116,"code":1561,"language":118,"meta":119,"style":119},"fd -e py -c time -1w\n",[25,1563,1564],{"__ignoreMap":119},[123,1565,1566,1568,1570,1573,1575,1578],{"class":125,"line":126},[123,1567,35],{"class":136},[123,1569,1478],{"class":204},[123,1571,1572],{"class":139}," py",[123,1574,1399],{"class":204},[123,1576,1577],{"class":139}," time",[123,1579,1580],{"class":204}," -1w\n",[16,1582,1584],{"id":1583},"проверка-результата","Проверка результата",[21,1586,1587,1588,281,1590,281,1592,1594],{},"После выполнения команды ",[25,1589,27],{},[25,1591,31],{},[25,1593,35],{}," убедитесь, что вывод соответствует ожиданиям:",[68,1596,1597,1604,1617,1632],{},[44,1598,1599,1600,1603],{},"Проверьте ",[73,1601,1602],{},"полные пути"," найденных файлов. Не нашли ли вы лишнее?",[44,1605,1606,1607,1610,1611,319,1614,1616],{},"Для критичных операций (удаление, изменение) сначала ",[73,1608,1609],{},"просмотрите список"," без действий (",[25,1612,1613],{},"-ls",[25,1615,27],{}," или просто вывод).",[44,1618,1619,1620,1623,1624,1626,1627,1629,1630,106],{},"Убедитесь, что ",[73,1621,1622],{},"результаты не устарели"," (особенно для ",[25,1625,31],{},"). Если ищете недавно созданный файл, а ",[25,1628,31],{}," его не находит — используйте ",[25,1631,27],{},[44,1633,1599,1634,1637,1638,1640],{},[73,1635,1636],{},"права доступа",". Если команда ничего не нашла, попробуйте запустить с ",[25,1639,105],{}," (если ищете в системных каталогах).",[16,1642,1644],{"id":1643},"возможные-проблемы","Возможные проблемы",[242,1646,1648,1649,1651],{"id":1647},"проблема-find-ничего-не-находит-хотя-файл-точно-существует","Проблема: ",[25,1650,27],{}," ничего не находит, хотя файл точно существует.",[21,1653,1654],{},[73,1655,1656],{},"Решение:",[68,1658,1659,1668,1680,1695],{},[44,1660,1599,1661,1664,1665,1667],{},[73,1662,1663],{},"правильность пути"," для поиска. Убедитесь, что каталог, где лежит файл, указан верно (",[25,1666,106],{}," для текущей папки).",[44,1669,1599,1670,1673,1674,1676,1677,1679],{},[73,1671,1672],{},"регистр"," в имени файла при использовании ",[25,1675,370],{},". Используйте ",[25,1678,374],{}," для регистронезависимого поиска.",[44,1681,1599,1682,1684,1685,1688,1689,1691,1692,106],{},[73,1683,1636],{}," на каталоги выше по иерархии. Если у вас нет прав на чтение (",[25,1686,1687],{},"r",") каталога, ",[25,1690,27],{}," не сможет в него заглянуть. Попробуйте ",[25,1693,1694],{},"sudo find ...",[44,1696,1697,1698,1701,1702,1705],{},"Убедитесь, что файл не является ",[73,1699,1700],{},"символьной ссылкой",", указывающей в недоступное место. Используйте ",[25,1703,1704],{},"-type l"," для поиска ссылок.",[242,1707,1648,1709,1711],{"id":1708},"проблема-find-работает-слишком-медленно-на-больших-дисках",[25,1710,27],{}," работает слишком медленно на больших дисках.",[21,1713,1714],{},[73,1715,1656],{},[68,1717,1718,1736,1743,1756],{},[44,1719,1720,1723,1724,1727,1728,1731,1732,1735],{},[73,1721,1722],{},"Ограничьте глубину поиска"," с помощью ",[25,1725,1726],{},"-maxdepth N"," (максимум N уровней вложенности) и ",[25,1729,1730],{},"-mindepth N"," (минимум N уровней). Например, ",[25,1733,1734],{},"find / -maxdepth 3 -name \"*.log\""," ищет только в первых трёх подкаталогах корня.",[44,1737,1738,1742],{},[73,1739,405,1740],{},[25,1741,31],{}," для поиска по имени, если актуальность данных в базе (обычно сутки) вас устраивает.",[44,1744,1745,1749,1750,28,1753,89],{},[73,1746,405,1747],{},[25,1748,35],{},", который оптимизирован для скорости и по умолчанию игнорирует ненужные каталоги (",[25,1751,1752],{},".git",[25,1754,1755],{},"node_modules",[44,1757,1758,1761,1762,1765,1766,89],{},[73,1759,1760],{},"Сузьте путь поиска",". Вместо ",[25,1763,1764],{},"find /"," ищите в конкретном разделе (",[25,1767,1768],{},"find /home",[242,1770,1772],{"id":1771},"проблема-нужно-найти-файлы-содержащие-определённый-текст","Проблема: Нужно найти файлы, содержащие определённый текст.",[21,1774,1775,560,1777,1779,1780,375],{},[73,1776,1656],{},[25,1778,27],{}," для этого не предназначен. Используйте ",[25,1781,1782],{},"grep",[114,1784,1786],{"className":116,"code":1785,"language":118,"meta":119,"style":119},"grep -r \"искомый_текст\" /путь/к/поиску/\n",[25,1787,1788],{"__ignoreMap":119},[123,1789,1790,1792,1795,1798],{"class":125,"line":126},[123,1791,1782],{"class":136},[123,1793,1794],{"class":204}," -r",[123,1796,1797],{"class":139}," \"искомый_текст\"",[123,1799,1800],{"class":139}," /путь/к/поиску/\n",[21,1802,1803],{},"Для поиска только среди файлов с определённым расширением:",[114,1805,1807],{"className":116,"code":1806,"language":118,"meta":119,"style":119},"grep -r --include=\"*.log\" \"ERROR\" /var/log/\n",[25,1808,1809],{"__ignoreMap":119},[123,1810,1811,1813,1815,1818,1821,1824],{"class":125,"line":126},[123,1812,1782],{"class":136},[123,1814,1794],{"class":204},[123,1816,1817],{"class":204}," --include=",[123,1819,1820],{"class":139},"\"*.log\"",[123,1822,1823],{"class":139}," \"ERROR\"",[123,1825,1826],{"class":139}," /var/log/\n",[21,1828,1829,1830,32,1832,375],{},"Или комбинируйте ",[25,1831,27],{},[25,1833,1782],{},[114,1835,1837],{"className":116,"code":1836,"language":118,"meta":119,"style":119},"find . -name \"*.py\" -exec grep -l \"def main\" {} \\;\n# Находит все .py файлы, содержащие строку \"def main\", и выводит их имена.\n",[25,1838,1839,1864],{"__ignoreMap":119},[123,1840,1841,1843,1845,1847,1850,1852,1855,1857,1860,1862],{"class":125,"line":126},[123,1842,27],{"class":136},[123,1844,1323],{"class":139},[123,1846,337],{"class":204},[123,1848,1849],{"class":139}," \"*.py\"",[123,1851,658],{"class":204},[123,1853,1854],{"class":139}," grep",[123,1856,1237],{"class":204},[123,1858,1859],{"class":139}," \"def main\"",[123,1861,664],{"class":139},[123,1863,672],{"class":204},[123,1865,1866],{"class":125,"line":133},[123,1867,1868],{"class":129},"# Находит все .py файлы, содержащие строку \"def main\", и выводит их имена.\n",[242,1870,1648,1872,1874],{"id":1871},"проблема-find-выводит-очень-много-результатов-нужно-только-количество",[25,1873,27],{}," выводит очень много результатов, нужно только количество.",[21,1876,1877,1879,1880,1883],{},[73,1878,1656],{}," Добавьте ",[25,1881,1882],{},"| wc -l"," (pipe to word count, lines):",[114,1885,1887],{"className":116,"code":1886,"language":118,"meta":119,"style":119},"find /var/log -name \"*.log\" | wc -l\n",[25,1888,1889],{"__ignoreMap":119},[123,1890,1891,1893,1895,1897,1899,1903,1906],{"class":125,"line":126},[123,1892,27],{"class":136},[123,1894,533],{"class":139},[123,1896,337],{"class":204},[123,1898,538],{"class":139},[123,1900,1902],{"class":1901},"szBVR"," |",[123,1904,1905],{"class":136}," wc",[123,1907,1908],{"class":204}," -l\n",[21,1910,1911,1912,560,1914,1917],{},"Или используйте встроенную опцию ",[25,1913,27],{},[25,1915,1916],{},"-printf '.' | wc -c"," (более быстрее для огромного количества файлов).",[242,1919,1921],{"id":1920},"проблема-нужно-найти-и-обработать-файлы-с-пробелами-или-спецсимволами-в-именах","Проблема: Нужно найти и обработать файлы с пробелами или спецсимволами в именах.",[21,1923,1924,1926,1927,354,1929,1932,1933,1936,1937,1940],{},[73,1925,1656],{}," Всегда используйте ",[25,1928,1130],{},[25,1930,1931],{},"-print0"," в связке с ",[25,1934,1935],{},"xargs -0",". Простой вывод (",[25,1938,1939],{},"find . -name \"*.txt\"",") может сломаться при пробелах.",[114,1942,1944],{"className":116,"code":1943,"language":118,"meta":119,"style":119},"# Безопасная обработка с помощью xargs\nfind . -name \"*.txt\" -print0 | xargs -0 rm\n\n# Или с помощью -exec (более безопасно)\nfind . -name \"*.txt\" -exec rm {} \\;\n",[25,1945,1946,1951,1976,1980,1985],{"__ignoreMap":119},[123,1947,1948],{"class":125,"line":126},[123,1949,1950],{"class":129},"# Безопасная обработка с помощью xargs\n",[123,1952,1953,1955,1957,1959,1962,1965,1967,1970,1973],{"class":125,"line":133},[123,1954,27],{"class":136},[123,1956,1323],{"class":139},[123,1958,337],{"class":204},[123,1960,1961],{"class":139}," \"*.txt\"",[123,1963,1964],{"class":204}," -print0",[123,1966,1902],{"class":1901},[123,1968,1969],{"class":136}," xargs",[123,1971,1972],{"class":204}," -0",[123,1974,1975],{"class":139}," rm\n",[123,1977,1978],{"class":125,"line":160},[123,1979,164],{"emptyLinePlaceholder":163},[123,1981,1982],{"class":125,"line":167},[123,1983,1984],{"class":129},"# Или с помощью -exec (более безопасно)\n",[123,1986,1987,1989,1991,1993,1995,1997,1999,2001],{"class":125,"line":173},[123,1988,27],{"class":136},[123,1990,1323],{"class":139},[123,1992,337],{"class":204},[123,1994,1961],{"class":139},[123,1996,658],{"class":204},[123,1998,1172],{"class":139},[123,2000,664],{"class":139},[123,2002,672],{"class":204},[21,2004,679,2005,2007,2008,2011,2012,2014],{},[25,2006,1931],{}," выводит имена, разделённые NUL-символом (",[25,2009,2010],{},"\\0","), а ",[25,2013,1935],{}," корректно их обрабатывает.",[2016,2017,2018],"style",{},"html pre.shiki code .sJ8bj, html code.shiki .sJ8bj{--shiki-default:#6A737D;--shiki-dark:#6A737D}html pre.shiki code .sScJk, html code.shiki .sScJk{--shiki-default:#6F42C1;--shiki-dark:#B392F0}html pre.shiki code .sZZnC, html code.shiki .sZZnC{--shiki-default:#032F62;--shiki-dark:#9ECBFF}html pre.shiki code .sVt8B, html code.shiki .sVt8B{--shiki-default:#24292E;--shiki-dark:#E1E4E8}html pre.shiki code .sj4cs, html code.shiki .sj4cs{--shiki-default:#005CC5;--shiki-dark:#79B8FF}html .default .shiki span {color: var(--shiki-default);background: var(--shiki-default-bg);font-style: var(--shiki-default-font-style);font-weight: var(--shiki-default-font-weight);text-decoration: var(--shiki-default-text-decoration);}html .shiki span {color: var(--shiki-default);background: var(--shiki-default-bg);font-style: var(--shiki-default-font-style);font-weight: var(--shiki-default-font-weight);text-decoration: var(--shiki-default-text-decoration);}html .dark .shiki span {color: var(--shiki-dark);background: var(--shiki-dark-bg);font-style: var(--shiki-dark-font-style);font-weight: var(--shiki-dark-font-weight);text-decoration: var(--shiki-dark-text-decoration);}html.dark .shiki span {color: var(--shiki-dark);background: var(--shiki-dark-bg);font-style: var(--shiki-dark-font-style);font-weight: var(--shiki-dark-font-weight);text-decoration: var(--shiki-dark-text-decoration);}html pre.shiki code .szBVR, html code.shiki .szBVR{--shiki-default:#D73A49;--shiki-dark:#F97583}",{"title":119,"searchDepth":133,"depth":133,"links":2020},[2021,2022,2023,2036,2037],{"id":18,"depth":133,"text":19},{"id":65,"depth":133,"text":66},{"id":239,"depth":133,"text":240,"children":2024},[2025,2027,2028,2029,2030,2031,2032,2033,2034],{"id":244,"depth":160,"text":2026},"Шаг 1: Базовый синтаксис команды find",{"id":363,"depth":160,"text":364},{"id":401,"depth":160,"text":402},{"id":475,"depth":160,"text":476},{"id":675,"depth":160,"text":676},{"id":779,"depth":160,"text":780},{"id":967,"depth":160,"text":968},{"id":1123,"depth":160,"text":1124},{"id":1344,"depth":160,"text":2035},"Шаг 9: Альтернативы: locate и fd",{"id":1583,"depth":133,"text":1584},{"id":1643,"depth":133,"text":1644,"children":2038},[2039,2041,2043,2044,2046],{"id":1647,"depth":160,"text":2040},"Проблема: find ничего не находит, хотя файл точно существует.",{"id":1708,"depth":160,"text":2042},"Проблема: find работает слишком медленно на больших дисках.",{"id":1771,"depth":160,"text":1772},{"id":1871,"depth":160,"text":2045},"Проблема: find выводит очень много результатов, нужно только количество.",{"id":1920,"depth":160,"text":1921},null,"2026-02-17 11:44:47","Пошаговая инструкция по поиску файлов в Linux с примерами. Учитесь использовать find, locate и fd для поиска по имени, размеру, дате и правам. Решение за 15 минут.","easy",false,"15-30 мин","md",[2055,2058,2061,2064],{"answer":2056,"question":2057},"`find` ищет файлы в реальном времени, сканируя файловую систему, что даёт актуальные результаты, но медленнее. `locate` использует предварительно построенную базу данных, поэтому работает мгновенно, но может не находить очень новые файлы до обновления базы (`updatedb`).","Чем команда find отличается от locate?",{"answer":2059,"question":2060},"Для поиска по содержимому используйте `grep -r 'текст' /путь/`. Команда `find` ищет только по метаданным (имя, размер, дата). Для сложного поиска по содержимому комбинируйте: `find . -name '*.log' -exec grep -l 'error' {} \\;`.","Как искать файлы по содержимому?",{"answer":2062,"question":2063},"Чаще всего причина в правах доступа. Запустите `find` с `sudo`, если ищете в системных каталогах (`/var`, `/usr`). Также проверьте, не опечатались ли в имени или пути, и что файловая система смонтирована.","Что делать, если find не находит файл, который точно есть?",{"answer":2065,"question":2066},"Да, для простого поиска по имени используйте `locate` (быстро) или современную утилиту `fd` (быстро, с удобным синтаксисом и цветным выводом). Установите `fd` через менеджер пакетов (`sudo apt install fd-find` в Debian/Ubuntu).","Есть ли более быстрая альтернатива find?",[2068,2071,2074,2077,2080,2083],{"name":2069,"text":2070},"Поиск по имени файла (точное совпадение)","Используйте `find /путь/ -name 'имя_файла'`. Замените `/путь/` на каталог для поиска (`.` для текущей папки, `/home` для домашних каталогов). Имя файла чувствительно к регистру.",{"name":2072,"text":2073},"Поиск по шаблону (подстрока или маска)","Примените `-name 'шаблон'` с подстановочными знаками: `*` для нескольких символов, `?` для одного. Пример: `find /var/log -name '*.log'` найдёт все файлы с расширением `.log`.",{"name":2075,"text":2076},"Поиск по размеру файла","Используйте опцию `-size`. Например, `find / -size +100M` найдёт файлы больше 100 МБ. Суффиксы: `c` (байты), `k` (КБ), `M` (МБ), `G` (ГБ). Знак `+` — больше, `-` — меньше.",{"name":2078,"text":2079},"Поиск по дате изменения","Опции `-mtime` (изменён), `-atime` (доступ), `-ctime` (метаданные). `find /tmp -mtime -1` найдёт файлы, изменённые за последние 24 часа. `-mtime +7` — старше 7 дней.",{"name":2081,"text":2082},"Поиск по правам доступа (правам)","Используйте `-perm`. `find / -perm -u=x` найдёт файлы, исполняемые владельцем. Для точного совпадения прав: `find . -perm 644`.",{"name":2084,"text":2085},"Использование locate для быстрого поиска","Просто выполните `locate имя_файла`. База данных обновляется раз в сутки автоматически. Для принудительного обновления: `sudo updatedb`.","PT20M",[2088,2089,2090,2091,2092,2093,2094,2095,2096,2097],"найти файл в линукс","команда find примеры","поиск по размеру linux","как найти файл по имени в терминале","locate команда linux","fd утилита linux","поиск файлов с расширением .log","find по дате изменения","поиск больших файлов в linux","команда для поиска в линукс","ru_RU",{},"/guides/linux/find-file","linux",[2103,2104,2105],"/guides/linux/grep-search-content","/guides/linux/file-permissions-chmod","/errors/linux/permission-denied","Гайды Linux",{"title":5,"description":2049},"guides/linux/find-file","В этом гайде вы освоите основные и продвинутые техники поиска файлов в Linux с помощью утилит find, locate и fd. Мы рассмотрим поиск по имени, содержимому, размеру, дате изменения и правам доступа на практических примерах.",[2101,2111,27,31,2112,2113,118],"cli","sysadmin","terminal","guide","9JDTwcviaG9agq1E1ooYR-AVyPoi1nPg9WS0YVDUXv0",{"data":2117,"body":2118},{},{"type":2119,"children":2120},"root",[2121],{"type":2122,"tag":21,"props":2123,"children":2124},"element",{},[2125,2131,2133,2138,2140,2145],{"type":2122,"tag":25,"props":2126,"children":2128},{"className":2127},[],[2129],{"type":2130,"value":27},"text",{"type":2130,"value":2132}," ищет файлы в реальном времени, сканируя файловую систему, что даёт актуальные результаты, но медленнее. ",{"type":2122,"tag":25,"props":2134,"children":2136},{"className":2135},[],[2137],{"type":2130,"value":31},{"type":2130,"value":2139}," использует предварительно построенную базу данных, поэтому работает мгновенно, но может не находить очень новые файлы до обновления базы (",{"type":2122,"tag":25,"props":2141,"children":2143},{"className":2142},[],[2144],{"type":2130,"value":1438},{"type":2130,"value":89},{"data":2147,"body":2148},{},{"type":2119,"children":2149},[2150],{"type":2122,"tag":21,"props":2151,"children":2152},{},[2153,2155,2161,2163,2168,2170,2176],{"type":2130,"value":2154},"Для поиска по содержимому используйте ",{"type":2122,"tag":25,"props":2156,"children":2158},{"className":2157},[],[2159],{"type":2130,"value":2160},"grep -r 'текст' /путь/",{"type":2130,"value":2162},". Команда ",{"type":2122,"tag":25,"props":2164,"children":2166},{"className":2165},[],[2167],{"type":2130,"value":27},{"type":2130,"value":2169}," ищет только по метаданным (имя, размер, дата). Для сложного поиска по содержимому комбинируйте: ",{"type":2122,"tag":25,"props":2171,"children":2173},{"className":2172},[],[2174],{"type":2130,"value":2175},"find . -name '*.log' -exec grep -l 'error' {} \\;",{"type":2130,"value":106},{"data":2178,"body":2179},{},{"type":2119,"children":2180},[2181],{"type":2122,"tag":21,"props":2182,"children":2183},{},[2184,2186,2191,2193,2198,2200,2205,2206,2212],{"type":2130,"value":2185},"Чаще всего причина в правах доступа. Запустите ",{"type":2122,"tag":25,"props":2187,"children":2189},{"className":2188},[],[2190],{"type":2130,"value":27},{"type":2130,"value":2192}," с ",{"type":2122,"tag":25,"props":2194,"children":2196},{"className":2195},[],[2197],{"type":2130,"value":105},{"type":2130,"value":2199},", если ищете в системных каталогах (",{"type":2122,"tag":25,"props":2201,"children":2203},{"className":2202},[],[2204],{"type":2130,"value":101},{"type":2130,"value":28},{"type":2122,"tag":25,"props":2207,"children":2209},{"className":2208},[],[2210],{"type":2130,"value":2211},"/usr",{"type":2130,"value":2213},"). Также проверьте, не опечатались ли в имени или пути, и что файловая система смонтирована.",{"data":2215,"body":2216},{},{"type":2119,"children":2217},[2218],{"type":2122,"tag":21,"props":2219,"children":2220},{},[2221,2223,2228,2230,2235,2237,2242,2244,2250],{"type":2130,"value":2222},"Да, для простого поиска по имени используйте ",{"type":2122,"tag":25,"props":2224,"children":2226},{"className":2225},[],[2227],{"type":2130,"value":31},{"type":2130,"value":2229}," (быстро) или современную утилиту ",{"type":2122,"tag":25,"props":2231,"children":2233},{"className":2232},[],[2234],{"type":2130,"value":35},{"type":2130,"value":2236}," (быстро, с удобным синтаксисом и цветным выводом). Установите ",{"type":2122,"tag":25,"props":2238,"children":2240},{"className":2239},[],[2241],{"type":2130,"value":35},{"type":2130,"value":2243}," через менеджер пакетов (",{"type":2122,"tag":25,"props":2245,"children":2247},{"className":2246},[],[2248],{"type":2130,"value":2249},"sudo apt install fd-find",{"type":2130,"value":2251}," в Debian/Ubuntu).",{"data":2253,"body":2254},{},{"type":2119,"children":2255},[2256],{"type":2122,"tag":21,"props":2257,"children":2258},{},[2259,2260,2266,2268,2274,2276,2281,2283,2289],{"type":2130,"value":405},{"type":2122,"tag":25,"props":2261,"children":2263},{"className":2262},[],[2264],{"type":2130,"value":2265},"find /путь/ -name 'имя_файла'",{"type":2130,"value":2267},". Замените ",{"type":2122,"tag":25,"props":2269,"children":2271},{"className":2270},[],[2272],{"type":2130,"value":2273},"/путь/",{"type":2130,"value":2275}," на каталог для поиска (",{"type":2122,"tag":25,"props":2277,"children":2279},{"className":2278},[],[2280],{"type":2130,"value":106},{"type":2130,"value":2282}," для текущей папки, ",{"type":2122,"tag":25,"props":2284,"children":2286},{"className":2285},[],[2287],{"type":2130,"value":2288},"/home",{"type":2130,"value":2290}," для домашних каталогов). Имя файла чувствительно к регистру.",{"data":2292,"body":2293},{},{"type":2119,"children":2294},[2295],{"type":2122,"tag":21,"props":2296,"children":2297},{},[2298,2300,2306,2308,2314,2316,2322,2324,2330,2332,2337],{"type":2130,"value":2299},"Примените ",{"type":2122,"tag":25,"props":2301,"children":2303},{"className":2302},[],[2304],{"type":2130,"value":2305},"-name 'шаблон'",{"type":2130,"value":2307}," с подстановочными знаками: ",{"type":2122,"tag":25,"props":2309,"children":2311},{"className":2310},[],[2312],{"type":2130,"value":2313},"*",{"type":2130,"value":2315}," для нескольких символов, ",{"type":2122,"tag":25,"props":2317,"children":2319},{"className":2318},[],[2320],{"type":2130,"value":2321},"?",{"type":2130,"value":2323}," для одного. Пример: ",{"type":2122,"tag":25,"props":2325,"children":2327},{"className":2326},[],[2328],{"type":2130,"value":2329},"find /var/log -name '*.log'",{"type":2130,"value":2331}," найдёт все файлы с расширением ",{"type":2122,"tag":25,"props":2333,"children":2335},{"className":2334},[],[2336],{"type":2130,"value":512},{"type":2130,"value":106},{"data":2339,"body":2340},{},{"type":2119,"children":2341},[2342],{"type":2122,"tag":21,"props":2343,"children":2344},{},[2345,2347,2352,2354,2360,2362,2367,2369,2374,2376,2381,2383,2388,2390,2395,2397,2402],{"type":2130,"value":2346},"Используйте опцию ",{"type":2122,"tag":25,"props":2348,"children":2350},{"className":2349},[],[2351],{"type":2130,"value":682},{"type":2130,"value":2353},". Например, ",{"type":2122,"tag":25,"props":2355,"children":2357},{"className":2356},[],[2358],{"type":2130,"value":2359},"find / -size +100M",{"type":2130,"value":2361}," найдёт файлы больше 100 МБ. Суффиксы: ",{"type":2122,"tag":25,"props":2363,"children":2365},{"className":2364},[],[2366],{"type":2130,"value":434},{"type":2130,"value":2368}," (байты), ",{"type":2122,"tag":25,"props":2370,"children":2372},{"className":2371},[],[2373],{"type":2130,"value":695},{"type":2130,"value":2375}," (КБ), ",{"type":2122,"tag":25,"props":2377,"children":2379},{"className":2378},[],[2380],{"type":2130,"value":701},{"type":2130,"value":2382}," (МБ), ",{"type":2122,"tag":25,"props":2384,"children":2386},{"className":2385},[],[2387],{"type":2130,"value":707},{"type":2130,"value":2389}," (ГБ). Знак ",{"type":2122,"tag":25,"props":2391,"children":2393},{"className":2392},[],[2394],{"type":2130,"value":718},{"type":2130,"value":2396}," — больше, ",{"type":2122,"tag":25,"props":2398,"children":2400},{"className":2399},[],[2401],{"type":2130,"value":724},{"type":2130,"value":2403}," — меньше.",{"data":2405,"body":2406},{},{"type":2119,"children":2407},[2408],{"type":2122,"tag":21,"props":2409,"children":2410},{},[2411,2413,2419,2421,2427,2429,2435,2437,2443,2445,2451],{"type":2130,"value":2412},"Опции ",{"type":2122,"tag":25,"props":2414,"children":2416},{"className":2415},[],[2417],{"type":2130,"value":2418},"-mtime",{"type":2130,"value":2420}," (изменён), ",{"type":2122,"tag":25,"props":2422,"children":2424},{"className":2423},[],[2425],{"type":2130,"value":2426},"-atime",{"type":2130,"value":2428}," (доступ), ",{"type":2122,"tag":25,"props":2430,"children":2432},{"className":2431},[],[2433],{"type":2130,"value":2434},"-ctime",{"type":2130,"value":2436}," (метаданные). ",{"type":2122,"tag":25,"props":2438,"children":2440},{"className":2439},[],[2441],{"type":2130,"value":2442},"find /tmp -mtime -1",{"type":2130,"value":2444}," найдёт файлы, изменённые за последние 24 часа. ",{"type":2122,"tag":25,"props":2446,"children":2448},{"className":2447},[],[2449],{"type":2130,"value":2450},"-mtime +7",{"type":2130,"value":2452}," — старше 7 дней.",{"data":2454,"body":2455},{},{"type":2119,"children":2456},[2457],{"type":2122,"tag":21,"props":2458,"children":2459},{},[2460,2461,2467,2469,2475,2477,2483],{"type":2130,"value":405},{"type":2122,"tag":25,"props":2462,"children":2464},{"className":2463},[],[2465],{"type":2130,"value":2466},"-perm",{"type":2130,"value":2468},". ",{"type":2122,"tag":25,"props":2470,"children":2472},{"className":2471},[],[2473],{"type":2130,"value":2474},"find / -perm -u=x",{"type":2130,"value":2476}," найдёт файлы, исполняемые владельцем. Для точного совпадения прав: ",{"type":2122,"tag":25,"props":2478,"children":2480},{"className":2479},[],[2481],{"type":2130,"value":2482},"find . -perm 644",{"type":2130,"value":106},{"data":2485,"body":2486},{},{"type":2119,"children":2487},[2488],{"type":2122,"tag":21,"props":2489,"children":2490},{},[2491,2493,2499,2501,2507],{"type":2130,"value":2492},"Просто выполните ",{"type":2122,"tag":25,"props":2494,"children":2496},{"className":2495},[],[2497],{"type":2130,"value":2498},"locate имя_файла",{"type":2130,"value":2500},". База данных обновляется раз в сутки автоматически. Для принудительного обновления: ",{"type":2122,"tag":25,"props":2502,"children":2504},{"className":2503},[],[2505],{"type":2130,"value":2506},"sudo updatedb",{"type":2130,"value":106},[2509],{"id":2510,"title":2511,"appliesTo":2512,"author":11,"body":2517,"canonical":2047,"code":2528,"createdAt":2738,"description":2739,"difficulty":2740,"draft":2051,"estimatedTime":2741,"extension":2053,"faq":2047,"howToSteps":2047,"howToTotalTime":2047,"image":2047,"keywords":2047,"locale":2047,"meta":2742,"navigation":163,"path":2105,"platform":2101,"related":2743,"section":2047,"seo":2747,"severity":2740,"stem":2748,"summary":2749,"tags":2750,"twitterCreator":2047,"twitterSite":2047,"type":2754,"updatedAt":2738,"__hash__":2755},"content_ru/errors/linux/permission-denied.md","Permission denied в Linux: отказано в доступе",[2513,2514,2515,2516],"Ubuntu","Debian","Fedora","Arch Linux",{"type":13,"value":2518,"toc":2730},[2519,2530,2533,2537,2553,2555,2559,2562,2574,2576,2590,2592,2596,2599,2620,2622,2626,2629,2643,2646,2663,2665,2669,2672,2687,2690,2707,2709,2713,2727],[21,2520,2521,2522,2525,2526,2529],{},"Ошибка ",[73,2523,2524],{},"Permission denied"," (код ",[25,2527,2528],{},"EACCES",") в Linux означает, что текущий пользователь не имеет необходимых прав для выполнения операции. Она может возникать при запуске скриптов, открытии файлов или попытке изменить системные каталоги.",[2531,2532],"hr",{},[16,2534,2536],{"id":2535},"основные-причины","Основные причины",[41,2538,2539,2542,2545,2550],{},[44,2540,2541],{},"Недостаточные права на файл или папку",[44,2543,2544],{},"Отсутствует бит выполнения у скрипта",[44,2546,2547,2548],{},"Попытка доступа к системным каталогам без ",[25,2549,105],{},[44,2551,2552],{},"Неверный владелец файла",[2531,2554],{},[16,2556,2558],{"id":2557},"способ-1-запуск-с-sudo","Способ 1: Запуск с sudo",[21,2560,2561],{},"Если операция требует прав администратора:",[114,2563,2565],{"className":116,"code":2564,"language":118,"meta":119,"style":119},"sudo команда\n",[25,2566,2567],{"__ignoreMap":119},[123,2568,2569,2571],{"class":125,"line":126},[123,2570,105],{"class":136},[123,2572,2573],{"class":139}," команда\n",[21,2575,314],{},[114,2577,2579],{"className":116,"code":2578,"language":118,"meta":119,"style":119},"sudo apt update\n",[25,2580,2581],{"__ignoreMap":119},[123,2582,2583,2585,2587],{"class":125,"line":126},[123,2584,105],{"class":136},[123,2586,140],{"class":139},[123,2588,2589],{"class":139}," update\n",[2531,2591],{},[16,2593,2595],{"id":2594},"способ-2-добавление-права-на-выполнение","Способ 2: Добавление права на выполнение",[21,2597,2598],{},"Если ошибка возникает при запуске скрипта:",[114,2600,2602],{"className":116,"code":2601,"language":118,"meta":119,"style":119},"chmod +x script.sh\n./script.sh\n",[25,2603,2604,2615],{"__ignoreMap":119},[123,2605,2606,2609,2612],{"class":125,"line":126},[123,2607,2608],{"class":136},"chmod",[123,2610,2611],{"class":139}," +x",[123,2613,2614],{"class":139}," script.sh\n",[123,2616,2617],{"class":125,"line":133},[123,2618,2619],{"class":136},"./script.sh\n",[2531,2621],{},[16,2623,2625],{"id":2624},"способ-3-проверка-прав-доступа","Способ 3: Проверка прав доступа",[21,2627,2628],{},"Посмотрите текущие права:",[114,2630,2632],{"className":116,"code":2631,"language":118,"meta":119,"style":119},"ls -l filename\n",[25,2633,2634],{"__ignoreMap":119},[123,2635,2636,2638,2640],{"class":125,"line":126},[123,2637,88],{"class":136},[123,2639,1237],{"class":204},[123,2641,2642],{"class":139}," filename\n",[21,2644,2645],{},"Если нужно изменить владельца:",[114,2647,2649],{"className":116,"code":2648,"language":118,"meta":119,"style":119},"sudo chown user:user filename\n",[25,2650,2651],{"__ignoreMap":119},[123,2652,2653,2655,2658,2661],{"class":125,"line":126},[123,2654,105],{"class":136},[123,2656,2657],{"class":139}," chown",[123,2659,2660],{"class":139}," user:user",[123,2662,2642],{"class":139},[2531,2664],{},[16,2666,2668],{"id":2667},"способ-4-проверка-прав-на-каталог","Способ 4: Проверка прав на каталог",[21,2670,2671],{},"Даже если файл доступен, родительский каталог может быть закрыт:",[114,2673,2675],{"className":116,"code":2674,"language":118,"meta":119,"style":119},"ls -ld directory\n",[25,2676,2677],{"__ignoreMap":119},[123,2678,2679,2681,2684],{"class":125,"line":126},[123,2680,88],{"class":136},[123,2682,2683],{"class":204}," -ld",[123,2685,2686],{"class":139}," directory\n",[21,2688,2689],{},"При необходимости измените права:",[114,2691,2693],{"className":116,"code":2692,"language":118,"meta":119,"style":119},"sudo chmod 755 directory\n",[25,2694,2695],{"__ignoreMap":119},[123,2696,2697,2699,2702,2705],{"class":125,"line":126},[123,2698,105],{"class":136},[123,2700,2701],{"class":139}," chmod",[123,2703,2704],{"class":204}," 755",[123,2706,2686],{"class":139},[2531,2708],{},[16,2710,2712],{"id":2711},"итог","Итог",[21,2714,2521,2715,2717,2718,2720,2721,32,2723,2726],{},[25,2716,2528],{}," в Linux почти всегда связана с правами доступа. Использование ",[25,2719,105],{},", корректная настройка ",[25,2722,2608],{},[25,2724,2725],{},"chown"," обычно полностью решают проблему.",[2016,2728,2729],{},"html pre.shiki code .sScJk, html code.shiki .sScJk{--shiki-default:#6F42C1;--shiki-dark:#B392F0}html pre.shiki code .sZZnC, html code.shiki .sZZnC{--shiki-default:#032F62;--shiki-dark:#9ECBFF}html .default .shiki span {color: var(--shiki-default);background: var(--shiki-default-bg);font-style: var(--shiki-default-font-style);font-weight: var(--shiki-default-font-weight);text-decoration: var(--shiki-default-text-decoration);}html .shiki span {color: var(--shiki-default);background: var(--shiki-default-bg);font-style: var(--shiki-default-font-style);font-weight: var(--shiki-default-font-weight);text-decoration: var(--shiki-default-text-decoration);}html .dark .shiki span {color: var(--shiki-dark);background: var(--shiki-dark-bg);font-style: var(--shiki-dark-font-style);font-weight: var(--shiki-dark-font-weight);text-decoration: var(--shiki-dark-text-decoration);}html.dark .shiki span {color: var(--shiki-dark);background: var(--shiki-dark-bg);font-style: var(--shiki-dark-font-style);font-weight: var(--shiki-dark-font-weight);text-decoration: var(--shiki-dark-text-decoration);}html pre.shiki code .sj4cs, html code.shiki .sj4cs{--shiki-default:#005CC5;--shiki-dark:#79B8FF}",{"title":119,"searchDepth":133,"depth":133,"links":2731},[2732,2733,2734,2735,2736,2737],{"id":2535,"depth":133,"text":2536},{"id":2557,"depth":133,"text":2558},{"id":2594,"depth":133,"text":2595},{"id":2624,"depth":133,"text":2625},{"id":2667,"depth":133,"text":2668},{"id":2711,"depth":133,"text":2712},"2026-02-12","Как исправить ошибку Permission denied в Linux. Пошаговые решения для файлов, папок и исполняемых скриптов.","medium","5-15 мин",{},[2744,2745,2746],"/errors/linux/command-not-found","/errors/linux/no-space-left-on-device","/errors/linux/read-only-file-system",{"title":2511,"description":2739},"errors/linux/permission-denied","Ошибка EACCES (Permission denied) возникает, когда у пользователя недостаточно прав для доступа к файлу, папке или выполнению команды.",[2751,2752,2753,2608,105],"Linux","Ошибка","Права доступа","error","xmflm-_Ps3Z40r-nDeiWmpOlPxv6BSr1lHoU-O5QjO4"]