[{"data":1,"prerenderedAt":-1},["ShallowReactive",2],{"page-ru-/errors/linux/file-not-found":3,"mdc--4rv4tx-key":954,"mdc--gk38at-key":964,"mdc--v0ovf2-key":988,"mdc-g9kmjp-key":996,"mdc-tewqjj-key":1026,"mdc--br4pvc-key":1034,"mdc--rrg0d7-key":1051,"mdc-xgqern-key":1068,"mdc-z2w251-key":1076,"related-/errors/linux/permission-denied,/errors/linux/command-not-found,/guides/linux/find-file":1092},{"id":4,"title":5,"appliesTo":6,"author":11,"body":12,"canonical":887,"code":49,"createdAt":888,"description":889,"difficulty":890,"draft":891,"estimatedTime":892,"extension":893,"faq":894,"howToSteps":907,"howToTotalTime":923,"image":887,"keywords":924,"locale":933,"meta":934,"navigation":935,"path":936,"platform":937,"related":938,"section":942,"seo":943,"severity":944,"stem":945,"summary":946,"tags":947,"twitterCreator":887,"twitterSite":887,"type":952,"updatedAt":888,"__hash__":953},"content_ru/errors/linux/file-not-found.md","Ошибка 'Файл не найден' в Linux: причины и решения",[7,8,9,10],"Ubuntu 20.04 и выше","CentOS 7 и выше","Debian 10 и выше","Все дистрибутивы Linux","FixPedia Team",{"type":13,"value":14,"toc":875},"minimark",[15,20,44,51,55,58,144,148,153,156,219,222,226,229,358,361,365,368,458,462,465,560,564,567,701,704,708,711,868,871],[16,17,19],"h2",{"id":18},"что-означает-ошибка-файл-не-найден","Что означает ошибка 'Файл не найден'",[21,22,23,24,28,29,32,33,36,37,36,40,43],"p",{},"В Linux ошибка \"Файл не найден\" (англ. \"No such file or directory\") — это системное сообщение, которое появляется, когда операционная система не может найти указанный файл или каталог по заданному пути. Ошибка обычно сопровождается текстом, например: ",[25,26,27],"code",{},"bash: /home/user/file.txt: No such file or directory"," или ",[25,30,31],{},"ls: cannot access 'file': No such file or directory",". Она возникает при выполнении различных команд, таких как ",[25,34,35],{},"cat",", ",[25,38,39],{},"ls",[25,41,42],{},"rm",", или при запуске скриптов и программ.",[21,45,46,47,50],{},"Эта ошибка соответствует коду системной ошибки ",[25,48,49],{},"ENOENT"," (Error NO ENTry). Она не означает, что файл обязательно удалён — он может просто находиться в другом месте, или путь указан некорректно. Часто проблема кроется в человеческой ошибке, но иногда может быть вызвана сбоями файловой системы или повреждением данных.",[16,52,54],{"id":53},"причины-возникновения","Причины возникновения",[21,56,57],{},"Конкретные причины, по которым возникает эта ошибка:",[59,60,61,77,83,97,103,109,122,138],"ol",{},[62,63,64,68,69,72,73,76],"li",{},[65,66,67],"strong",{},"Неправильный путь к файлу",": Опечатка в имени файла или каталога, использование относительного пути вместо абсолютного, или отсутствие ведущего слеша (например, ",[25,70,71],{},"file.txt"," вместо ",[25,74,75],{},"/home/user/file.txt",").",[62,78,79,82],{},[65,80,81],{},"Файл был перемещён или удалён",": Файл существовал ранее, но был удалён или перемещён в другое место, а команда или скрипт всё ещё ссылается на старое место.",[62,84,85,88,89,92,93,96],{},[65,86,87],{},"Файл находится в другом каталоге",": Вы ищете файл в неверной директории. Например, ожидаете файл в ",[25,90,91],{},"/var/log",", но он на самом деле в ",[25,94,95],{},"/home/user",".",[62,98,99,102],{},[65,100,101],{},"Проблемы с символическими ссылками",": Символическая ссылка (symlink) указывает на файл, который больше не существует. При попытке доступа к ссылке система пытается найти целевой файл и не находит его.",[62,104,105,108],{},[65,106,107],{},"Файловая система не смонтирована",": Файл находится на отдельном разделе или внешнем носителе (например, USB-диске), который не был смонтирован в систему. Поэтому путь недоступен.",[62,110,111,114,115,118,119,96],{},[65,112,113],{},"Чувствительность к регистру",": В Linux имена файлов чувствительны к регистру. Файл с именем ",[25,116,117],{},"Document.txt"," не будет найден, если вы запросите ",[25,120,121],{},"document.txt",[62,123,124,127,128,131,132,28,135,96],{},[65,125,126],{},"Специальные символы в имени файла",": Имя файла содержит пробелы, кавычки или другие специальные символы, которые необходимо экранировать или заключать в кавычки. Например, ",[25,129,130],{},"file name.txt"," должно быть указано как ",[25,133,134],{},"file\\ name.txt",[25,136,137],{},"\"file name.txt\"",[62,139,140,143],{},[65,141,142],{},"Ошибка в скрипте или программе",": В скрипте или приложении может быть программная ошибка, которая формирует некорректный путь, например, из-за неправильной конкатенации строк.",[16,145,147],{"id":146},"способы-решения","Способы решения",[149,150,152],"h3",{"id":151},"способ-1-проверка-и-исправление-пути-к-файлу","Способ 1: Проверка и исправление пути к файлу",[21,154,155],{},"Самый простой способ — перепроверить, правильно ли указан путь к файлу.",[59,157,158,170,180,199,206],{},[62,159,160,161,164,165,167,168,96],{},"Убедитесь, что вы используете абсолютный путь (начинающийся с ",[25,162,163],{},"/","), особенно в скриптах и конфигурационных файлах. Например, вместо ",[25,166,71],{}," используйте ",[25,169,75],{},[62,171,172,173,176,177,179],{},"Проверьте написание имени файла и каталогов на наличие опечаток. Помните, что Linux чувствителен к регистру: ",[25,174,175],{},"File.txt"," и ",[25,178,71],{}," — разные файлы.",[62,181,182,183,36,186,36,189,192,193,28,196,96],{},"Если в пути есть пробелы или специальные символы (например, ",[25,184,185],{},"$",[25,187,188],{},"*",[25,190,191],{},"?","), заключите весь путь в кавычки или экранируйте символы обратным слешем. Например: ",[25,194,195],{},"\"/home/user/my file.txt\"",[25,197,198],{},"/home/user/my\\ file.txt",[62,200,201,202,205],{},"Используйте автодополнение табуляцией: начните вводить путь в терминале и нажмите ",[25,203,204],{},"Tab",", чтобы система предложила возможные варианты и проверила существование.",[62,207,208,209,212,213,28,216,96],{},"Если путь содержит переменные окружения (например, ",[25,210,211],{},"$HOME","), убедитесь, что они корректно определены. Проверьте значением командами ",[25,214,215],{},"echo $HOME",[25,217,218],{},"env",[21,220,221],{},"После исправления повторите команду. Если ошибка исчезла, проблема была в пути.",[149,223,225],{"id":224},"способ-2-поиск-файла-в-системе","Способ 2: Поиск файла в системе",[21,227,228],{},"Если вы не уверены, где находится файл, используйте команды поиска, чтобы определить его местоположение.",[59,230,231,281,302,331],{},[62,232,233,234,273,276,277,280],{},"Для поиска по имени файла во всей файловой системе (может потребовать прав суперпользователя для некоторых каталогов):",[235,236,241],"pre",{"className":237,"code":238,"language":239,"meta":240,"style":240},"language-bash shiki shiki-themes github-light github-dark","sudo find / -name \"имя_файла\" 2>/dev/null\n","bash","",[25,242,243],{"__ignoreMap":240},[244,245,248,252,256,259,263,266,270],"span",{"class":246,"line":247},"line",1,[244,249,251],{"class":250},"sScJk","sudo",[244,253,255],{"class":254},"sZZnC"," find",[244,257,258],{"class":254}," /",[244,260,262],{"class":261},"sj4cs"," -name",[244,264,265],{"class":254}," \"имя_файла\"",[244,267,269],{"class":268},"szBVR"," 2>",[244,271,272],{"class":254},"/dev/null\n",[274,275],"br",{},"Опция ",[25,278,279],{},"2>/dev/null"," подавляет сообщения об ошибках доступа, оставляя только найденные файлы.",[62,282,283,284],{},"Для поиска в текущем каталоге и всех подкаталогах:",[235,285,287],{"className":237,"code":286,"language":239,"meta":240,"style":240},"find . -name \"имя_файла\"\n",[25,288,289],{"__ignoreMap":240},[244,290,291,294,297,299],{"class":246,"line":247},[244,292,293],{"class":250},"find",[244,295,296],{"class":254}," .",[244,298,262],{"class":261},[244,300,301],{"class":254}," \"имя_файла\"\n",[62,303,304,305,308,309,321,323,324,326,327,330],{},"Если у вас установлена утилита ",[25,306,307],{},"locate",", которая использует предварительно созданную базу данных, поиск будет значительно быстрее:",[235,310,312],{"className":237,"code":311,"language":239,"meta":240,"style":240},"locate имя_файла\n",[25,313,314],{"__ignoreMap":240},[244,315,316,318],{"class":246,"line":247},[244,317,307],{"class":250},[244,319,320],{"class":254}," имя_файла\n",[274,322],{},"Примечание: база ",[25,325,307],{}," может быть неактуальной. Обновите её командой ",[25,328,329],{},"sudo updatedb"," (требует sudo и может занять время).",[62,332,333,334,337,338],{},"Если вы ищете файл по части имени, используйте подстановочные знаки. Например, для поиска всех ",[25,335,336],{},".txt"," файлов:",[235,339,341],{"className":237,"code":340,"language":239,"meta":240,"style":240},"find / -name \"*.txt\" 2>/dev/null\n",[25,342,343],{"__ignoreMap":240},[244,344,345,347,349,351,354,356],{"class":246,"line":247},[244,346,293],{"class":250},[244,348,258],{"class":254},[244,350,262],{"class":261},[244,352,353],{"class":254}," \"*.txt\"",[244,355,269],{"class":268},[244,357,272],{"class":254},[21,359,360],{},"После нахождения файла используйте полный путь, который показала команда, или скопируйте файл в ожидаемое место.",[149,362,364],{"id":363},"способ-3-проверка-и-исправление-символических-ссылок","Способ 3: Проверка и исправление символических ссылок",[21,366,367],{},"Если ошибка возникает при использовании символической ссылки (symlink), проверьте, существует ли целевой файл, на который указывает ссылка.",[59,369,370,394,414,441],{},[62,371,372,373,388,390,391,96],{},"Просмотрите, на что указывает символическая ссылка:",[235,374,376],{"className":237,"code":375,"language":239,"meta":240,"style":240},"ls -l /путь/к/ссылке\n",[25,377,378],{"__ignoreMap":240},[244,379,380,382,385],{"class":246,"line":247},[244,381,39],{"class":250},[244,383,384],{"class":261}," -l",[244,386,387],{"class":254}," /путь/к/ссылке\n",[274,389],{},"Вывод будет похож на: ",[25,392,393],{},"ссылка -> /целевой/путь/файла",[62,395,396,397,411,413],{},"Проверьте, существует ли целевой файл по указанному пути:",[235,398,400],{"className":237,"code":399,"language":239,"meta":240,"style":240},"ls -l /целевой/путь/файла\n",[25,401,402],{"__ignoreMap":240},[244,403,404,406,408],{"class":246,"line":247},[244,405,39],{"class":250},[244,407,384],{"class":261},[244,409,410],{"class":254}," /целевой/путь/файла\n",[274,412],{},"Если команда выведет ошибку \"No such file or directory\", значит, целевой файл отсутствует.",[62,415,416,417,435,276,437,440],{},"Если целевой файл был перемещён или удалён, укажите ссылке новый путь:",[235,418,420],{"className":237,"code":419,"language":239,"meta":240,"style":240},"ln -sf /новый/путь/файла /путь/к/ссылке\n",[25,421,422],{"__ignoreMap":240},[244,423,424,427,430,433],{"class":246,"line":247},[244,425,426],{"class":250},"ln",[244,428,429],{"class":261}," -sf",[244,431,432],{"class":254}," /новый/путь/файла",[244,434,387],{"class":254},[274,436],{},[25,438,439],{},"-f"," принудительно заменит существующую ссылку.",[62,442,443,444,455,457],{},"Если ссылка больше не нужна, удалите её:",[235,445,447],{"className":237,"code":446,"language":239,"meta":240,"style":240},"rm /путь/к/ссылке\n",[25,448,449],{"__ignoreMap":240},[244,450,451,453],{"class":246,"line":247},[244,452,42],{"class":250},[244,454,387],{"class":254},[274,456],{},"(Убедитесь, что вы удаляете именно ссылку, а не целевой файл).",[149,459,461],{"id":460},"способ-4-восстановление-удалённого-файла","Способ 4: Восстановление удалённого файла",[21,463,464],{},"Если файл был случайно удалён и вы не имеете резервной копии, можно попробовать восстановить его с помощью специальных утилит. Успех зависит от того, как давно файл был удалён и насколько активно используется диск.",[59,466,467,473,491,548,557],{},[62,468,469,472],{},[65,470,471],{},"Немедленно прекратите использование файловой системы",", на которой находился файл, чтобы минимизировать риск перезаписи данных. Если это системный диск, рассмотрите загрузку с LiveCD.",[62,474,475,478,479,482,483,486,487,490],{},[65,476,477],{},"Определите раздел (device)",", на котором находился файл. Например, ",[25,480,481],{},"/home"," может быть на ",[25,484,485],{},"/dev/sda3",". Используйте команду ",[25,488,489],{},"df -h"," для просмотра точек монтирования.",[62,492,493,496,497],{},[65,494,495],{},"Используйте утилиты для восстановления",". Для файловых систем ext3/ext4:",[498,499,500,538],"ul",{},[62,501,502,505,506,527,528,531,532,534,535,96],{},[25,503,504],{},"extundelete",":\n",[235,507,509],{"className":237,"code":508,"language":239,"meta":240,"style":240},"sudo extundelete /dev/sdX --restore-file /путь/к/файлу\n",[25,510,511],{"__ignoreMap":240},[244,512,513,515,518,521,524],{"class":246,"line":247},[244,514,251],{"class":250},[244,516,517],{"class":254}," extundelete",[244,519,520],{"class":254}," /dev/sdX",[244,522,523],{"class":261}," --restore-file",[244,525,526],{"class":254}," /путь/к/файлу\n","\nЗамените ",[25,529,530],{},"/dev/sdX"," на ваш раздел (например, ",[25,533,485],{},"). Восстановленные файлы будут помещены в текущий каталог с именем ",[25,536,537],{},"RECOVERED_FILES",[62,539,540,543,544,547],{},[25,541,542],{},"testdisk"," (интерактивная) или ",[25,545,546],{},"photorec"," (для любых файловых систем, но без сохранения имён и структуры).",[62,549,550,551,554,555,96],{},"Для файловых систем XFS используйте ",[25,552,553],{},"xfs_undelete"," (если доступен) или ",[25,556,542],{},[62,558,559],{},"После восстановления проверьте целостность файла. Восстановление не гарантирует успех, особенно если файл был удалён давно или диск активно используется.",[149,561,563],{"id":562},"способ-5-проверка-монтирования-файловых-систем","Способ 5: Проверка монтирования файловых систем",[21,565,566],{},"Если файл должен находиться на отдельном разделе, внешнем диске (USB, SSD) или сетевой файловой системе (NFS, Samba), убедитесь, что она правильно смонтирована.",[59,568,569,611,630,680,683],{},[62,570,571,572,590,592,593,608,610],{},"Проверьте, смонтирована ли файловая система, содержащая файл:",[235,573,575],{"className":237,"code":574,"language":239,"meta":240,"style":240},"mount | grep /путь/к/файлу\n",[25,576,577],{"__ignoreMap":240},[244,578,579,582,585,588],{"class":246,"line":247},[244,580,581],{"class":250},"mount",[244,583,584],{"class":268}," |",[244,586,587],{"class":250}," grep",[244,589,526],{"class":254},[274,591],{},"Или используйте:",[235,594,596],{"className":237,"code":595,"language":239,"meta":240,"style":240},"df -h /путь/к/файлу\n",[25,597,598],{"__ignoreMap":240},[244,599,600,603,606],{"class":246,"line":247},[244,601,602],{"class":250},"df",[244,604,605],{"class":261}," -h",[244,607,526],{"class":254},[274,609],{},"Если команда ничего не выводит или показывает ошибку, значит, файловая система не смонтирована.",[62,612,613,614,623,625,626,629],{},"Определите устройство, соответствующее файловой системе. Например, для USB-диска:",[235,615,617],{"className":237,"code":616,"language":239,"meta":240,"style":240},"lsblk\n",[25,618,619],{"__ignoreMap":240},[244,620,621],{"class":246,"line":247},[244,622,616],{"class":250},[274,624],{},"Найдите устройство (например, ",[25,627,628],{},"/dev/sdb1",") и точку монтирования.",[62,631,632,633,651,653,654,677,679],{},"Смонтируйте файловую систему. Для обычного диска:",[235,634,636],{"className":237,"code":635,"language":239,"meta":240,"style":240},"sudo mount /dev/sdb1 /mnt/usb\n",[25,637,638],{"__ignoreMap":240},[244,639,640,642,645,648],{"class":246,"line":247},[244,641,251],{"class":250},[244,643,644],{"class":254}," mount",[244,646,647],{"class":254}," /dev/sdb1",[244,649,650],{"class":254}," /mnt/usb\n",[274,652],{},"Для сетевых ресурсов (NFS):",[235,655,657],{"className":237,"code":656,"language":239,"meta":240,"style":240},"sudo mount -t nfs server:/share /mnt/nfs\n",[25,658,659],{"__ignoreMap":240},[244,660,661,663,665,668,671,674],{"class":246,"line":247},[244,662,251],{"class":250},[244,664,644],{"class":254},[244,666,667],{"class":261}," -t",[244,669,670],{"class":254}," nfs",[244,672,673],{"class":254}," server:/share",[244,675,676],{"class":254}," /mnt/nfs\n",[274,678],{},"Убедитесь, что у вас есть права на монтирование и доступ к устройству.",[62,681,682],{},"После монтирования повторите команду, которая вызывала ошибку. Если файл теперь доступен, проблема решена.",[62,684,685,686,689,690,698,700],{},"Для автоматического монтирования при загрузке добавьте запись в ",[25,687,688],{},"/etc/fstab",". Например:",[235,691,696],{"className":692,"code":694,"language":695},[693],"language-text","/dev/sdb1  /mnt/usb  ext4  defaults  0  2\n","text",[25,697,694],{"__ignoreMap":240},[274,699],{},"Но будьте осторожны: неправильная запись может помешить загрузке системы.",[702,703],"in-article-ad",{},[16,705,707],{"id":706},"профилактика","Профилактика",[21,709,710],{},"Чтобы избежать ошибки \"Файл не найден\" в будущем, следуйте этим практикам:",[498,712,713,726,805,821,827,837,848,858],{},[62,714,715,718,719,722,723,96],{},[65,716,717],{},"Всегда используйте абсолютные пути"," в скриптах, конфигурационных файлах и cron-задачах. Это исключает путаницу с текущим рабочим каталогом. Например, вместо ",[25,720,721],{},"./script.sh"," пишите ",[25,724,725],{},"/home/user/script.sh",[62,727,728,731,732,797,798,801,802,96],{},[65,729,730],{},"Проверяйте существование файлов"," перед операциями, которые их требуют. В bash-скриптах используйте условные конструкции:\n",[235,733,735],{"className":237,"code":734,"language":239,"meta":240,"style":240},"if [ -f \"/path/to/file\" ]; then\n    # файл существует, выполняем действия\nelse\n    echo \"Ошибка: файл не найден\" >&2\n    exit 1\nfi\n",[25,736,737,757,764,770,782,791],{"__ignoreMap":240},[244,738,739,742,746,748,751,754],{"class":246,"line":247},[244,740,741],{"class":268},"if",[244,743,745],{"class":744},"sVt8B"," [ ",[244,747,439],{"class":268},[244,749,750],{"class":254}," \"/path/to/file\"",[244,752,753],{"class":744}," ]; ",[244,755,756],{"class":268},"then\n",[244,758,760],{"class":246,"line":759},2,[244,761,763],{"class":762},"sJ8bj","    # файл существует, выполняем действия\n",[244,765,767],{"class":246,"line":766},3,[244,768,769],{"class":268},"else\n",[244,771,773,776,779],{"class":246,"line":772},4,[244,774,775],{"class":261},"    echo",[244,777,778],{"class":254}," \"Ошибка: файл не найден\"",[244,780,781],{"class":268}," >&2\n",[244,783,785,788],{"class":246,"line":784},5,[244,786,787],{"class":261},"    exit",[244,789,790],{"class":261}," 1\n",[244,792,794],{"class":246,"line":793},6,[244,795,796],{"class":268},"fi\n","\nДля каталогов используйте ",[25,799,800],{},"-d",", для ссылок ",[25,803,804],{},"-L",[62,806,807,810,811,36,814,817,818,96],{},[65,808,809],{},"Ведите резервные копии"," важных файлов и каталогов. Используйте такие инструменты, как ",[25,812,813],{},"rsync",[25,815,816],{},"tar"," или облачные сервисы (например, Dropbox, Google Drive). Настройте регулярное автоматическое резервное копирование с помощью ",[25,819,820],{},"cron",[62,822,823,826],{},[65,824,825],{},"Используйте версионный контроль"," (например, Git) для файлов конфигурации, скриптов и исходного кода. Это позволяет отслеживать изменения и восстанавливать предыдущие версии файлов.",[62,828,829,832,833,836],{},[65,830,831],{},"Будьте внимательны с символическими ссылками",": при перемещении или удалении целевого файла обновляйте или удаляйте соответствующие ссылки. Регулярно проверяйте их целостность командой ",[25,834,835],{},"find / -xtype l 2>/dev/null"," (находит битые ссылки).",[62,838,839,844,845,847],{},[65,840,841,842],{},"Регулярно обновляйте базу ",[25,843,307],{}," командой ",[25,846,329],{}," для быстрого поиска файлов по имени.",[62,849,850,853,854,857],{},[65,851,852],{},"При работе с внешними носителями"," всегда безопасно извлекайте устройства (через ",[25,855,856],{},"umount"," или графический интерфейс) перед отключением, чтобы избежать повреждения файловой системы.",[62,859,860,863,864,867],{},[65,861,862],{},"Пишите скрипты с обработкой ошибок",": используйте ",[25,865,866],{},"set -e"," для выхода при ошибке или явно проверяйте возвращаемые коды команд.",[21,869,870],{},"Соблюдение этих правил значительно снизит вероятность появления ошибки \"Файл не найден\" и упростит диагностику, если она всё же возникнет.",[872,873,874],"style",{},"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 .sj4cs, html code.shiki .sj4cs{--shiki-default:#005CC5;--shiki-dark:#79B8FF}html pre.shiki code .szBVR, html code.shiki .szBVR{--shiki-default:#D73A49;--shiki-dark:#F97583}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 .sVt8B, html code.shiki .sVt8B{--shiki-default:#24292E;--shiki-dark:#E1E4E8}html pre.shiki code .sJ8bj, html code.shiki .sJ8bj{--shiki-default:#6A737D;--shiki-dark:#6A737D}",{"title":240,"searchDepth":759,"depth":759,"links":876},[877,878,879,886],{"id":18,"depth":759,"text":19},{"id":53,"depth":759,"text":54},{"id":146,"depth":759,"text":147,"children":880},[881,882,883,884,885],{"id":151,"depth":766,"text":152},{"id":224,"depth":766,"text":225},{"id":363,"depth":766,"text":364},{"id":460,"depth":766,"text":461},{"id":562,"depth":766,"text":563},{"id":706,"depth":759,"text":707},null,"2026-02-16 18:29:32","Узнайте, как исправить ошибку 'Файл не найден' в Linux. Пошаговая инструкция с причинами и решениями для Ubuntu, CentOS и других дистрибутивов. Решите проблему за 5 минут!","easy",false,"5-15 мин","md",[895,898,901,904],{"answer":896,"question":897},"Эта ошибка указывает, что система не может найти указанный файл или каталог по заданному пути. Она возникает при попытке доступа к несуществующему файлу.","Что означает ошибка 'No such file or directory' в Linux?",{"answer":899,"question":900},"Используйте команду `test -f /path/to/file` или `[ -f /path/to/file ]` в скриптах, чтобы проверить существование файла.","Как проверить, существует ли файл перед выполнением команды?",{"answer":902,"question":903},"Нет, ошибка 'файл не найден' возникает только если файл не существует. Если файл есть, но нет прав, будет ошибка 'Permission denied'.","Может ли эта ошибка возникнуть из-за прав доступа?",{"answer":905,"question":906},"Используйте команду `find` для поиска по имени, например `find / -name 'файл.txt' 2>/dev/null`, или `locate` если база актуальна.","Как найти файл, который был перемещён или удалён?",[908,911,914,917,920],{"name":909,"text":910},"Проверьте правильность пути к файлу","Убедитесь, что вы указали полный и корректный путь к файлу, включая регистр символов, так как Linux чувствителен к регистру.",{"name":912,"text":913},"Используйте команду `ls` для проверки существования файла","Выполните `ls -la /путь/к/файлу`, чтобы увидеть, существует ли файл и какие у него права доступа.",{"name":915,"text":916},"Поищите файл в других каталогах","Если файл должен быть в системе, используйте `find / -name 'имя_файла' 2>/dev/null` для поиска по всему диску.",{"name":918,"text":919},"Восстановите файл из резервной копии","Если файл был удалён, восстановите его из резервной копии или используйте утилиты для восстановления данных, если это возможно.",{"name":921,"text":922},"Проверьте символические ссылки","Если вы используете символические ссылки, убедитесь, что они указывают на существующий файл, с помощью `ls -l /путь/к/ссылке`.","PT15M",[925,926,927,928,929,930,931,932],"файл не найден linux","ошибка no such file or directory","как исправить файл не найден в ubuntu","ENOENT ошибка","ls cannot access no such file","bash файл не найден","поиск файла в linux","восстановление удалённого файла linux","ru_RU",{},true,"/errors/linux/file-not-found","linux",[939,940,941],"/errors/linux/permission-denied","/errors/linux/command-not-found","/guides/linux/find-file","Ошибки Linux",{"title":5,"description":889},"medium","errors/linux/file-not-found","Эта статья объясняет, почему в Linux возникает ошибка 'Файл не найден', и предлагает практические способы её устранения, от простой проверки пути до восстановления данных.",[948,949,49,950,239,951],"ошибки linux","file not found","linux troubleshooting","ubuntu","error","azaGInjLQjJHSEHDyc1n7ahfpjzzpzrBC8V3GOJyfls",{"data":955,"body":956},{},{"type":957,"children":958},"root",[959],{"type":960,"tag":21,"props":961,"children":962},"element",{},[963],{"type":695,"value":896},{"data":965,"body":966},{},{"type":957,"children":967},[968],{"type":960,"tag":21,"props":969,"children":970},{},[971,973,979,980,986],{"type":695,"value":972},"Используйте команду ",{"type":960,"tag":25,"props":974,"children":976},{"className":975},[],[977],{"type":695,"value":978},"test -f /path/to/file",{"type":695,"value":28},{"type":960,"tag":25,"props":981,"children":983},{"className":982},[],[984],{"type":695,"value":985},"[ -f /path/to/file ]",{"type":695,"value":987}," в скриптах, чтобы проверить существование файла.",{"data":989,"body":990},{},{"type":957,"children":991},[992],{"type":960,"tag":21,"props":993,"children":994},{},[995],{"type":695,"value":902},{"data":997,"body":998},{},{"type":957,"children":999},[1000],{"type":960,"tag":21,"props":1001,"children":1002},{},[1003,1004,1009,1011,1017,1019,1024],{"type":695,"value":972},{"type":960,"tag":25,"props":1005,"children":1007},{"className":1006},[],[1008],{"type":695,"value":293},{"type":695,"value":1010}," для поиска по имени, например ",{"type":960,"tag":25,"props":1012,"children":1014},{"className":1013},[],[1015],{"type":695,"value":1016},"find / -name 'файл.txt' 2>/dev/null",{"type":695,"value":1018},", или ",{"type":960,"tag":25,"props":1020,"children":1022},{"className":1021},[],[1023],{"type":695,"value":307},{"type":695,"value":1025}," если база актуальна.",{"data":1027,"body":1028},{},{"type":957,"children":1029},[1030],{"type":960,"tag":21,"props":1031,"children":1032},{},[1033],{"type":695,"value":910},{"data":1035,"body":1036},{},{"type":957,"children":1037},[1038],{"type":960,"tag":21,"props":1039,"children":1040},{},[1041,1043,1049],{"type":695,"value":1042},"Выполните ",{"type":960,"tag":25,"props":1044,"children":1046},{"className":1045},[],[1047],{"type":695,"value":1048},"ls -la /путь/к/файлу",{"type":695,"value":1050},", чтобы увидеть, существует ли файл и какие у него права доступа.",{"data":1052,"body":1053},{},{"type":957,"children":1054},[1055],{"type":960,"tag":21,"props":1056,"children":1057},{},[1058,1060,1066],{"type":695,"value":1059},"Если файл должен быть в системе, используйте ",{"type":960,"tag":25,"props":1061,"children":1063},{"className":1062},[],[1064],{"type":695,"value":1065},"find / -name 'имя_файла' 2>/dev/null",{"type":695,"value":1067}," для поиска по всему диску.",{"data":1069,"body":1070},{},{"type":957,"children":1071},[1072],{"type":960,"tag":21,"props":1073,"children":1074},{},[1075],{"type":695,"value":919},{"data":1077,"body":1078},{},{"type":957,"children":1079},[1080],{"type":960,"tag":21,"props":1081,"children":1082},{},[1083,1085,1091],{"type":695,"value":1084},"Если вы используете символические ссылки, убедитесь, что они указывают на существующий файл, с помощью ",{"type":960,"tag":25,"props":1086,"children":1088},{"className":1087},[],[1089],{"type":695,"value":1090},"ls -l /путь/к/ссылке",{"type":695,"value":96},[1093,1338,2095],{"id":1094,"title":1095,"appliesTo":1096,"author":11,"body":1101,"canonical":887,"code":1112,"createdAt":1324,"description":1325,"difficulty":944,"draft":891,"estimatedTime":892,"extension":893,"faq":887,"howToSteps":887,"howToTotalTime":887,"image":887,"keywords":887,"locale":887,"meta":1326,"navigation":935,"path":939,"platform":937,"related":1327,"section":887,"seo":1330,"severity":944,"stem":1331,"summary":1332,"tags":1333,"twitterCreator":887,"twitterSite":887,"type":952,"updatedAt":1324,"__hash__":1337},"content_ru/errors/linux/permission-denied.md","Permission denied в Linux: отказано в доступе",[1097,1098,1099,1100],"Ubuntu","Debian","Fedora","Arch Linux",{"type":13,"value":1102,"toc":1316},[1103,1114,1117,1121,1137,1139,1143,1146,1158,1161,1176,1178,1182,1185,1206,1208,1212,1215,1229,1232,1249,1251,1255,1258,1273,1276,1293,1295,1299,1313],[21,1104,1105,1106,1109,1110,1113],{},"Ошибка ",[65,1107,1108],{},"Permission denied"," (код ",[25,1111,1112],{},"EACCES",") в Linux означает, что текущий пользователь не имеет необходимых прав для выполнения операции. Она может возникать при запуске скриптов, открытии файлов или попытке изменить системные каталоги.",[1115,1116],"hr",{},[16,1118,1120],{"id":1119},"основные-причины","Основные причины",[498,1122,1123,1126,1129,1134],{},[62,1124,1125],{},"Недостаточные права на файл или папку",[62,1127,1128],{},"Отсутствует бит выполнения у скрипта",[62,1130,1131,1132],{},"Попытка доступа к системным каталогам без ",[25,1133,251],{},[62,1135,1136],{},"Неверный владелец файла",[1115,1138],{},[16,1140,1142],{"id":1141},"способ-1-запуск-с-sudo","Способ 1: Запуск с sudo",[21,1144,1145],{},"Если операция требует прав администратора:",[235,1147,1149],{"className":237,"code":1148,"language":239,"meta":240,"style":240},"sudo команда\n",[25,1150,1151],{"__ignoreMap":240},[244,1152,1153,1155],{"class":246,"line":247},[244,1154,251],{"class":250},[244,1156,1157],{"class":254}," команда\n",[21,1159,1160],{},"Пример:",[235,1162,1164],{"className":237,"code":1163,"language":239,"meta":240,"style":240},"sudo apt update\n",[25,1165,1166],{"__ignoreMap":240},[244,1167,1168,1170,1173],{"class":246,"line":247},[244,1169,251],{"class":250},[244,1171,1172],{"class":254}," apt",[244,1174,1175],{"class":254}," update\n",[1115,1177],{},[16,1179,1181],{"id":1180},"способ-2-добавление-права-на-выполнение","Способ 2: Добавление права на выполнение",[21,1183,1184],{},"Если ошибка возникает при запуске скрипта:",[235,1186,1188],{"className":237,"code":1187,"language":239,"meta":240,"style":240},"chmod +x script.sh\n./script.sh\n",[25,1189,1190,1201],{"__ignoreMap":240},[244,1191,1192,1195,1198],{"class":246,"line":247},[244,1193,1194],{"class":250},"chmod",[244,1196,1197],{"class":254}," +x",[244,1199,1200],{"class":254}," script.sh\n",[244,1202,1203],{"class":246,"line":759},[244,1204,1205],{"class":250},"./script.sh\n",[1115,1207],{},[16,1209,1211],{"id":1210},"способ-3-проверка-прав-доступа","Способ 3: Проверка прав доступа",[21,1213,1214],{},"Посмотрите текущие права:",[235,1216,1218],{"className":237,"code":1217,"language":239,"meta":240,"style":240},"ls -l filename\n",[25,1219,1220],{"__ignoreMap":240},[244,1221,1222,1224,1226],{"class":246,"line":247},[244,1223,39],{"class":250},[244,1225,384],{"class":261},[244,1227,1228],{"class":254}," filename\n",[21,1230,1231],{},"Если нужно изменить владельца:",[235,1233,1235],{"className":237,"code":1234,"language":239,"meta":240,"style":240},"sudo chown user:user filename\n",[25,1236,1237],{"__ignoreMap":240},[244,1238,1239,1241,1244,1247],{"class":246,"line":247},[244,1240,251],{"class":250},[244,1242,1243],{"class":254}," chown",[244,1245,1246],{"class":254}," user:user",[244,1248,1228],{"class":254},[1115,1250],{},[16,1252,1254],{"id":1253},"способ-4-проверка-прав-на-каталог","Способ 4: Проверка прав на каталог",[21,1256,1257],{},"Даже если файл доступен, родительский каталог может быть закрыт:",[235,1259,1261],{"className":237,"code":1260,"language":239,"meta":240,"style":240},"ls -ld directory\n",[25,1262,1263],{"__ignoreMap":240},[244,1264,1265,1267,1270],{"class":246,"line":247},[244,1266,39],{"class":250},[244,1268,1269],{"class":261}," -ld",[244,1271,1272],{"class":254}," directory\n",[21,1274,1275],{},"При необходимости измените права:",[235,1277,1279],{"className":237,"code":1278,"language":239,"meta":240,"style":240},"sudo chmod 755 directory\n",[25,1280,1281],{"__ignoreMap":240},[244,1282,1283,1285,1288,1291],{"class":246,"line":247},[244,1284,251],{"class":250},[244,1286,1287],{"class":254}," chmod",[244,1289,1290],{"class":261}," 755",[244,1292,1272],{"class":254},[1115,1294],{},[16,1296,1298],{"id":1297},"итог","Итог",[21,1300,1105,1301,1303,1304,1306,1307,176,1309,1312],{},[25,1302,1112],{}," в Linux почти всегда связана с правами доступа. Использование ",[25,1305,251],{},", корректная настройка ",[25,1308,1194],{},[25,1310,1311],{},"chown"," обычно полностью решают проблему.",[872,1314,1315],{},"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":240,"searchDepth":759,"depth":759,"links":1317},[1318,1319,1320,1321,1322,1323],{"id":1119,"depth":759,"text":1120},{"id":1141,"depth":759,"text":1142},{"id":1180,"depth":759,"text":1181},{"id":1210,"depth":759,"text":1211},{"id":1253,"depth":759,"text":1254},{"id":1297,"depth":759,"text":1298},"2026-02-12","Как исправить ошибку Permission denied в Linux. Пошаговые решения для файлов, папок и исполняемых скриптов.",{},[940,1328,1329],"/errors/linux/no-space-left-on-device","/errors/linux/read-only-file-system",{"title":1095,"description":1325},"errors/linux/permission-denied","Ошибка EACCES (Permission denied) возникает, когда у пользователя недостаточно прав для доступа к файлу, папке или выполнению команды.",[1334,1335,1336,1194,251],"Linux","Ошибка","Права доступа","xmflm-_Ps3Z40r-nDeiWmpOlPxv6BSr1lHoU-O5QjO4",{"id":1339,"title":1340,"appliesTo":1341,"author":11,"body":1343,"canonical":887,"code":2051,"createdAt":2052,"description":2053,"difficulty":890,"draft":891,"estimatedTime":2054,"extension":893,"faq":2055,"howToSteps":2065,"howToTotalTime":2078,"image":887,"keywords":2079,"locale":933,"meta":2085,"navigation":935,"path":940,"platform":937,"related":2086,"section":942,"seo":2088,"severity":944,"stem":2089,"summary":2090,"tags":2091,"twitterCreator":887,"twitterSite":887,"type":952,"updatedAt":2052,"__hash__":2094},"content_ru/errors/linux/command-not-found.md","Ошибка «command not found» в Linux: причины и решения",[1097,1098,1342,1099],"CentOS",{"type":13,"value":1344,"toc":2036},[1345,1350,1366,1370,1377,1403,1407,1411,1476,1480,1493,1496,1502,1505,1558,1562,1625,1629,1736,1740,1744,1749,1799,1803,1847,1850,1873,1877,1990,1992,2021,2025,2030,2033],[1346,1347,1349],"h1",{"id":1348},"ошибка-command-not-found-в-linux","Ошибка «command not found» в Linux",[21,1351,1105,1352,1359,1360,1365],{},[65,1353,1354,1355,1358],{},"«bash: command not found: ",[244,1356,1357],{},"команда","»"," (или ",[65,1361,1362,1363,1358],{},"«zsh: command not found: ",[244,1364,1357],{}," в Zsh) — одна из наиболее распространённых проблем в Linux-терминале. Она означает, что оболочка не смогла найти исполняемый файл указанной команды в системных путях.",[16,1367,1369],{"id":1368},"причины-возникновения-ошибки","Причины возникновения ошибки",[21,1371,1372,1373,1376],{},"Существует несколько основных причин появления ошибки ",[25,1374,1375],{},"command not found",":",[59,1378,1379,1385,1391,1397],{},[62,1380,1381,1384],{},[65,1382,1383],{},"Команда не установлена"," — необходимый пакет просто не установлен в системе",[62,1386,1387,1390],{},[65,1388,1389],{},"Неправильный PATH"," — директория с командой не добавлена в переменную окружения PATH",[62,1392,1393,1396],{},[65,1394,1395],{},"Опечатка в названии"," — команда введена с ошибкой или неверным регистром",[62,1398,1399,1402],{},[65,1400,1401],{},"Отсутствие прав на выполнение"," — файл существует, но не имеет атрибута исполнения",[16,1404,1406],{"id":1405},"диагностика-ошибки","Диагностика ошибки",[149,1408,1410],{"id":1409},"_1-проверьте-правильность-написания","1. Проверьте правильность написания",[235,1412,1414],{"className":237,"code":1413,"language":239,"meta":240,"style":240},"# Пример опечатки\n$ pyton --version\nbash: pyton: command not found\n\n# Правильный вариант\n$ python3 --version\nPython 3.10.12\n",[25,1415,1416,1421,1431,1448,1453,1458,1467],{"__ignoreMap":240},[244,1417,1418],{"class":246,"line":247},[244,1419,1420],{"class":762},"# Пример опечатки\n",[244,1422,1423,1425,1428],{"class":246,"line":759},[244,1424,185],{"class":250},[244,1426,1427],{"class":254}," pyton",[244,1429,1430],{"class":261}," --version\n",[244,1432,1433,1436,1439,1442,1445],{"class":246,"line":766},[244,1434,1435],{"class":250},"bash:",[244,1437,1438],{"class":254}," pyton:",[244,1440,1441],{"class":254}," command",[244,1443,1444],{"class":254}," not",[244,1446,1447],{"class":254}," found\n",[244,1449,1450],{"class":246,"line":772},[244,1451,1452],{"emptyLinePlaceholder":935},"\n",[244,1454,1455],{"class":246,"line":784},[244,1456,1457],{"class":762},"# Правильный вариант\n",[244,1459,1460,1462,1465],{"class":246,"line":793},[244,1461,185],{"class":250},[244,1463,1464],{"class":254}," python3",[244,1466,1430],{"class":261},[244,1468,1470,1473],{"class":246,"line":1469},7,[244,1471,1472],{"class":250},"Python",[244,1474,1475],{"class":261}," 3.10.12\n",[149,1477,1479],{"id":1478},"_2-проверьте-переменную-path","2. Проверьте переменную PATH",[235,1481,1483],{"className":237,"code":1482,"language":239,"meta":240,"style":240},"echo $PATH\n",[25,1484,1485],{"__ignoreMap":240},[244,1486,1487,1490],{"class":246,"line":247},[244,1488,1489],{"class":261},"echo",[244,1491,1492],{"class":744}," $PATH\n",[21,1494,1495],{},"Типичный вывод:",[235,1497,1500],{"className":1498,"code":1499,"language":695},[693],"/usr/local/bin:/usr/bin:/bin:/usr/local/games:/usr/games\n",[25,1501,1499],{"__ignoreMap":240},[21,1503,1504],{},"Если нужная директория отсутствует, добавьте её:",[235,1506,1508],{"className":237,"code":1507,"language":239,"meta":240,"style":240},"# Временное добавление (действует до закрытия терминала)\nexport PATH=$PATH:/usr/local/myprogram/bin\n\n# Постоянное добавление (для текущего пользователя)\necho 'export PATH=$PATH:/usr/local/myprogram/bin' >> ~/.bashrc\nsource ~/.bashrc\n",[25,1509,1510,1515,1529,1533,1538,1551],{"__ignoreMap":240},[244,1511,1512],{"class":246,"line":247},[244,1513,1514],{"class":762},"# Временное добавление (действует до закрытия терминала)\n",[244,1516,1517,1520,1523,1526],{"class":246,"line":759},[244,1518,1519],{"class":268},"export",[244,1521,1522],{"class":744}," PATH",[244,1524,1525],{"class":268},"=",[244,1527,1528],{"class":744},"$PATH:/usr/local/myprogram/bin\n",[244,1530,1531],{"class":246,"line":766},[244,1532,1452],{"emptyLinePlaceholder":935},[244,1534,1535],{"class":246,"line":772},[244,1536,1537],{"class":762},"# Постоянное добавление (для текущего пользователя)\n",[244,1539,1540,1542,1545,1548],{"class":246,"line":784},[244,1541,1489],{"class":261},[244,1543,1544],{"class":254}," 'export PATH=$PATH:/usr/local/myprogram/bin'",[244,1546,1547],{"class":268}," >>",[244,1549,1550],{"class":254}," ~/.bashrc\n",[244,1552,1553,1556],{"class":246,"line":793},[244,1554,1555],{"class":261},"source",[244,1557,1550],{"class":254},[149,1559,1561],{"id":1560},"_3-найдите-местоположение-команды","3. Найдите местоположение команды",[235,1563,1565],{"className":237,"code":1564,"language":239,"meta":240,"style":240},"# Поиск команды в PATH\nwhich python3\n# Вывод: /usr/bin/python3\n\n# Поиск всех файлов, связанных с командой\nwhereis python3\n# Вывод: python3: /usr/bin/python3 /usr/bin/python3.10\n\n# Показать тип команды (встроенная, алиас, функция)\ntype python3\n",[25,1566,1567,1572,1580,1585,1589,1594,1601,1606,1611,1617],{"__ignoreMap":240},[244,1568,1569],{"class":246,"line":247},[244,1570,1571],{"class":762},"# Поиск команды в PATH\n",[244,1573,1574,1577],{"class":246,"line":759},[244,1575,1576],{"class":261},"which",[244,1578,1579],{"class":254}," python3\n",[244,1581,1582],{"class":246,"line":766},[244,1583,1584],{"class":762},"# Вывод: /usr/bin/python3\n",[244,1586,1587],{"class":246,"line":772},[244,1588,1452],{"emptyLinePlaceholder":935},[244,1590,1591],{"class":246,"line":784},[244,1592,1593],{"class":762},"# Поиск всех файлов, связанных с командой\n",[244,1595,1596,1599],{"class":246,"line":793},[244,1597,1598],{"class":250},"whereis",[244,1600,1579],{"class":254},[244,1602,1603],{"class":246,"line":1469},[244,1604,1605],{"class":762},"# Вывод: python3: /usr/bin/python3 /usr/bin/python3.10\n",[244,1607,1609],{"class":246,"line":1608},8,[244,1610,1452],{"emptyLinePlaceholder":935},[244,1612,1614],{"class":246,"line":1613},9,[244,1615,1616],{"class":762},"# Показать тип команды (встроенная, алиас, функция)\n",[244,1618,1620,1623],{"class":246,"line":1619},10,[244,1621,1622],{"class":261},"type",[244,1624,1579],{"class":254},[149,1626,1628],{"id":1627},"_4-проверьте-установлен-ли-пакет","4. Проверьте, установлен ли пакет",[235,1630,1632],{"className":237,"code":1631,"language":239,"meta":240,"style":240},"# Для Debian/Ubuntu\ndpkg -l | grep \u003Cназвание_пакета>\napt list --installed | grep \u003Cназвание_пакета>\n\n# Для CentOS/Fedora/RHEL\nrpm -qa | grep \u003Cназвание_пакета>\ndnf list installed | grep \u003Cназвание_пакета>\n",[25,1633,1634,1639,1662,1685,1689,1694,1714],{"__ignoreMap":240},[244,1635,1636],{"class":246,"line":247},[244,1637,1638],{"class":762},"# Для Debian/Ubuntu\n",[244,1640,1641,1644,1646,1648,1650,1653,1656,1659],{"class":246,"line":759},[244,1642,1643],{"class":250},"dpkg",[244,1645,384],{"class":261},[244,1647,584],{"class":268},[244,1649,587],{"class":250},[244,1651,1652],{"class":268}," \u003C",[244,1654,1655],{"class":254},"название_пакет",[244,1657,1658],{"class":744},"а",[244,1660,1661],{"class":268},">\n",[244,1663,1664,1667,1670,1673,1675,1677,1679,1681,1683],{"class":246,"line":766},[244,1665,1666],{"class":250},"apt",[244,1668,1669],{"class":254}," list",[244,1671,1672],{"class":261}," --installed",[244,1674,584],{"class":268},[244,1676,587],{"class":250},[244,1678,1652],{"class":268},[244,1680,1655],{"class":254},[244,1682,1658],{"class":744},[244,1684,1661],{"class":268},[244,1686,1687],{"class":246,"line":772},[244,1688,1452],{"emptyLinePlaceholder":935},[244,1690,1691],{"class":246,"line":784},[244,1692,1693],{"class":762},"# Для CentOS/Fedora/RHEL\n",[244,1695,1696,1699,1702,1704,1706,1708,1710,1712],{"class":246,"line":793},[244,1697,1698],{"class":250},"rpm",[244,1700,1701],{"class":261}," -qa",[244,1703,584],{"class":268},[244,1705,587],{"class":250},[244,1707,1652],{"class":268},[244,1709,1655],{"class":254},[244,1711,1658],{"class":744},[244,1713,1661],{"class":268},[244,1715,1716,1719,1721,1724,1726,1728,1730,1732,1734],{"class":246,"line":1469},[244,1717,1718],{"class":250},"dnf",[244,1720,1669],{"class":254},[244,1722,1723],{"class":254}," installed",[244,1725,584],{"class":268},[244,1727,587],{"class":250},[244,1729,1652],{"class":268},[244,1731,1655],{"class":254},[244,1733,1658],{"class":744},[244,1735,1661],{"class":268},[16,1737,1739],{"id":1738},"решения","Решения",[149,1741,1743],{"id":1742},"установка-отсутствующих-команд","Установка отсутствующих команд",[1745,1746,1748],"h4",{"id":1747},"ubuntudebian","Ubuntu/Debian",[235,1750,1752],{"className":237,"code":1751,"language":239,"meta":240,"style":240},"sudo apt update\nsudo apt install \u003Cназвание_пакета>\n\n# Пример: установка curl\nsudo apt install curl\n",[25,1753,1754,1762,1779,1783,1788],{"__ignoreMap":240},[244,1755,1756,1758,1760],{"class":246,"line":247},[244,1757,251],{"class":250},[244,1759,1172],{"class":254},[244,1761,1175],{"class":254},[244,1763,1764,1766,1768,1771,1773,1775,1777],{"class":246,"line":759},[244,1765,251],{"class":250},[244,1767,1172],{"class":254},[244,1769,1770],{"class":254}," install",[244,1772,1652],{"class":268},[244,1774,1655],{"class":254},[244,1776,1658],{"class":744},[244,1778,1661],{"class":268},[244,1780,1781],{"class":246,"line":766},[244,1782,1452],{"emptyLinePlaceholder":935},[244,1784,1785],{"class":246,"line":772},[244,1786,1787],{"class":762},"# Пример: установка curl\n",[244,1789,1790,1792,1794,1796],{"class":246,"line":784},[244,1791,251],{"class":250},[244,1793,1172],{"class":254},[244,1795,1770],{"class":254},[244,1797,1798],{"class":254}," curl\n",[1745,1800,1802],{"id":1801},"centosrhel","CentOS/RHEL",[235,1804,1806],{"className":237,"code":1805,"language":239,"meta":240,"style":240},"sudo yum install \u003Cназвание_пакета>\n# или\nsudo dnf install \u003Cназвание_пакета>\n",[25,1807,1808,1825,1830],{"__ignoreMap":240},[244,1809,1810,1812,1815,1817,1819,1821,1823],{"class":246,"line":247},[244,1811,251],{"class":250},[244,1813,1814],{"class":254}," yum",[244,1816,1770],{"class":254},[244,1818,1652],{"class":268},[244,1820,1655],{"class":254},[244,1822,1658],{"class":744},[244,1824,1661],{"class":268},[244,1826,1827],{"class":246,"line":759},[244,1828,1829],{"class":762},"# или\n",[244,1831,1832,1834,1837,1839,1841,1843,1845],{"class":246,"line":766},[244,1833,251],{"class":250},[244,1835,1836],{"class":254}," dnf",[244,1838,1770],{"class":254},[244,1840,1652],{"class":268},[244,1842,1655],{"class":254},[244,1844,1658],{"class":744},[244,1846,1661],{"class":268},[1745,1848,1100],{"id":1849},"arch-linux",[235,1851,1853],{"className":237,"code":1852,"language":239,"meta":240,"style":240},"sudo pacman -S \u003Cназвание_пакета>\n",[25,1854,1855],{"__ignoreMap":240},[244,1856,1857,1859,1862,1865,1867,1869,1871],{"class":246,"line":247},[244,1858,251],{"class":250},[244,1860,1861],{"class":254}," pacman",[244,1863,1864],{"class":261}," -S",[244,1866,1652],{"class":268},[244,1868,1655],{"class":254},[244,1870,1658],{"class":744},[244,1872,1661],{"class":268},[149,1874,1876],{"id":1875},"часто-встречающиеся-команды","Часто встречающиеся команды",[1878,1879,1880,1896],"table",{},[1881,1882,1883],"thead",{},[1884,1885,1886,1890,1893],"tr",{},[1887,1888,1889],"th",{},"Команда",[1887,1891,1892],{},"Пакет (Debian/Ubuntu)",[1887,1894,1895],{},"Пакет (CentOS)",[1897,1898,1899,1915,1930,1945,1960,1975],"tbody",{},[1884,1900,1901,1907,1911],{},[1902,1903,1904],"td",{},[25,1905,1906],{},"curl",[1902,1908,1909],{},[25,1910,1906],{},[1902,1912,1913],{},[25,1914,1906],{},[1884,1916,1917,1922,1926],{},[1902,1918,1919],{},[25,1920,1921],{},"wget",[1902,1923,1924],{},[25,1925,1921],{},[1902,1927,1928],{},[25,1929,1921],{},[1884,1931,1932,1937,1941],{},[1902,1933,1934],{},[25,1935,1936],{},"git",[1902,1938,1939],{},[25,1940,1936],{},[1902,1942,1943],{},[25,1944,1936],{},[1884,1946,1947,1952,1956],{},[1902,1948,1949],{},[25,1950,1951],{},"nano",[1902,1953,1954],{},[25,1955,1951],{},[1902,1957,1958],{},[25,1959,1951],{},[1884,1961,1962,1967,1971],{},[1902,1963,1964],{},[25,1965,1966],{},"vim",[1902,1968,1969],{},[25,1970,1966],{},[1902,1972,1973],{},[25,1974,1966],{},[1884,1976,1977,1982,1986],{},[1902,1978,1979],{},[25,1980,1981],{},"python3",[1902,1983,1984],{},[25,1985,1981],{},[1902,1987,1988],{},[25,1989,1981],{},[16,1991,707],{"id":706},[59,1993,1994,2000,2009,2015],{},[62,1995,1996,1999],{},[65,1997,1998],{},"Регулярно обновляйте систему"," — это обеспечивает наличие актуальных версий пакетов",[62,2001,2002,2005,2006,2008],{},[65,2003,2004],{},"Используйте автодополнение"," — нажмите ",[25,2007,204],{}," для автоматического завершения команды",[62,2010,2011,2014],{},[65,2012,2013],{},"Проверяйте документацию"," — перед установкой нового ПО изучите зависимости",[62,2016,2017,2020],{},[65,2018,2019],{},"Создавайте алиасы"," — для часто используемых команд с длинными путями",[16,2022,2024],{"id":2023},"заключение","Заключение",[21,2026,1105,2027,2029],{},[25,2028,1375],{}," редко является серьёзной проблемой и обычно легко устраняется установкой соответствующего пакета или исправлением переменной PATH. Следуя описанным выше шагам диагностики, вы быстро найдёте и устраните причину ошибки.",[21,2031,2032],{},"Если проблема сохраняется после выполнения всех рекомендаций, проверьте журналы системы или обратитесь к документации конкретного дистрибутива Linux.",[872,2034,2035],{},"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 .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 .sVt8B, html code.shiki .sVt8B{--shiki-default:#24292E;--shiki-dark:#E1E4E8}html pre.shiki code .szBVR, html code.shiki .szBVR{--shiki-default:#D73A49;--shiki-dark:#F97583}",{"title":240,"searchDepth":759,"depth":759,"links":2037},[2038,2039,2045,2049,2050],{"id":1368,"depth":759,"text":1369},{"id":1405,"depth":759,"text":1406,"children":2040},[2041,2042,2043,2044],{"id":1409,"depth":766,"text":1410},{"id":1478,"depth":766,"text":1479},{"id":1560,"depth":766,"text":1561},{"id":1627,"depth":766,"text":1628},{"id":1738,"depth":759,"text":1739,"children":2046},[2047,2048],{"id":1742,"depth":766,"text":1743},{"id":1875,"depth":766,"text":1876},{"id":706,"depth":759,"text":707},{"id":2023,"depth":759,"text":2024},"CMD_NF","2026-02-13 20:30:27","Полное руководство по устранению ошибки «bash: command not found» в Linux. Причины возникновения, методы диагностики и исправления.","15-45 мин",[2056,2059,2062],{"question":2057,"answer":2058},"Почему команда работает от root, но не работает от обычного пользователя?","Это может быть связано с разными переменными PATH для разных пользователей. Пользователь root обычно имеет `/sbin` и `/usr/sbin` в PATH, а обычный пользователь — нет.",{"question":2060,"answer":2061},"Как найти, где установлена программа?","Используйте команды `which \u003Cкоманда>` или `type \u003Cкоманда>` для поиска пути к исполняемому файлу.",{"question":2063,"answer":2064},"Команда была вчера, а сегодня нет — что могло измениться?","Возможно, вы открыли новую сессию терминала, где PATH не инициализирован корректно, или пакет был удалён/обновлён.",[2066,2069,2072,2075],{"name":2067,"text":2068},"Проверьте правильность написания команды","Убедитесь, что вы не допустили опечатку. Linux чувствителен к регистру, и `ls` ≠ `LS`.",{"name":2070,"text":2071},"Проверьте переменную PATH","Выполните `echo $PATH` и убедитесь, что нужные директории присутствуют. Добавьте путь: `export PATH=$PATH:/новый/путь`",{"name":2073,"text":2074},"Установите отсутствующий пакет","Для Ubuntu/Debian: `sudo apt install \u003Cпакет>`. Для CentOS/Fedora: `sudo yum install \u003Cпакет>` или `sudo dnf install \u003Cпакет>`.",{"name":2076,"text":2077},"Найдите местоположение команды","Используйте `which \u003Cкоманда>` или `whereis \u003Cкоманда>`, чтобы узнать, где находится исполняемый файл.","PT20M",[2080,2081,2082,2083,2084],"bash command not found","команда не найдена linux","исправить command not found","path переменная linux","установить команду linux",{},[939,2087],"/guides/linux/basic-linux-commands",{"title":1340,"description":2053},"errors/linux/command-not-found","Ошибка «command not found» возникает, когда система не может найти исполняемый файл команды. Чаще всего это происходит из-за отсутствия пакета, неправильного PATH или опечатки в названии команды.",[937,239,2092,1375,2093],"terminal","path","VHUrr0qTYUO9NxM4oG1pbWjng27K23AxSa-Ql7ELRxE",{"id":2096,"title":2097,"appliesTo":2098,"author":11,"body":2103,"canonical":887,"code":887,"createdAt":4073,"description":4074,"difficulty":890,"draft":891,"estimatedTime":4075,"extension":893,"faq":4076,"howToSteps":4089,"howToTotalTime":2078,"image":887,"keywords":4108,"locale":933,"meta":4119,"navigation":935,"path":941,"platform":937,"related":4120,"section":4123,"seo":4124,"severity":887,"stem":4125,"summary":4126,"tags":4127,"twitterCreator":887,"twitterSite":887,"type":4130,"updatedAt":4073,"__hash__":4131},"content_ru/guides/linux/find-file.md","Как найти файл в Linux: полное руководство по команде find",[2099,2100,2101,2102],"Linux (все дистрибутивы)","Bash/Zsh","findutils 4.5+","util-linux 2.25+",{"type":13,"value":2104,"toc":4045},[2105,2109,2120,2123,2144,2148,2284,2288,2294,2300,2312,2355,2367,2384,2403,2407,2417,2440,2444,2451,2483,2491,2513,2517,2520,2545,2561,2590,2607,2632,2711,2715,2721,2746,2749,2766,2771,2788,2793,2814,2818,2828,2863,2868,2898,2908,2928,2933,2998,3000,3004,3009,3061,3073,3091,3094,3110,3115,3129,3138,3156,3160,3169,3183,3276,3289,3335,3346,3375,3383,3389,3398,3437,3446,3458,3474,3482,3489,3564,3573,3585,3590,3612,3616,3626,3672,3676,3683,3688,3737,3743,3747,3800,3804,3814,3832,3835,3858,3865,3899,3905,3914,3937,3946,3950,3969,4030,4042],[16,2106,2108],{"id":2107},"введение-зачем-это-нужно","Введение / Зачем это нужно",[21,2110,2111,2112,36,2114,176,2116,2119],{},"Поиск файлов в Linux — одна из самых частых задач для системного администратора, разработчика и обычного пользователя. Вместо графического браузера вы используете мощную командную строку, которая позволяет находить файлы по любому критерию: имени, размеру, дате, содержимому или правам доступа. Этот гайд научит вас эффективно использовать утилиты ",[25,2113,293],{},[25,2115,307],{},[25,2117,2118],{},"fd"," для решения повседневных задач, от простого \"где мой конфиг?\" до поиска gigabyte-файлов, заполняющих диск.",[21,2121,2122],{},"После прохождения вы сможете:",[498,2124,2125,2128,2131,2134],{},[62,2126,2127],{},"Быстро находить файлы по имени с помощью масок.",[62,2129,2130],{},"Искать файлы по размеру и дате, чтобы освободить место.",[62,2132,2133],{},"Находить исполняемые файлы или файлы с определёнными правами.",[62,2135,2136,2137,36,2139,36,2141,2143],{},"Выбирать правильный инструмент (",[25,2138,293],{},[25,2140,307],{},[25,2142,2118],{},") для каждой ситуации.",[16,2145,2147],{"id":2146},"требования-подготовка","Требования / Подготовка",[59,2149,2150,2156,2167,2182],{},[62,2151,2152,2155],{},[65,2153,2154],{},"Доступ к терминалу Linux"," (любой дистрибутив: Ubuntu, CentOS, Arch, Fedora и т.д.).",[62,2157,2158,2161,2162,36,2165,76],{},[65,2159,2160],{},"Базовые знания навигации"," (",[25,2163,2164],{},"cd",[25,2166,39],{},[62,2168,2169,2172,2173,36,2176,2179,2180,96],{},[65,2170,2171],{},"Права на чтение каталогов",", в которых будете искать. Для системных каталогов (",[25,2174,2175],{},"/etc",[25,2177,2178],{},"/var",") может потребоваться ",[25,2181,251],{},[62,2183,2184,2185,2187,2188,2277,2278,2281,2282,96],{},"Для утилиты ",[25,2186,2118],{}," (опционально, но рекомендуется):\n",[235,2189,2191],{"className":237,"code":2190,"language":239,"meta":240,"style":240},"# 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",[25,2192,2193,2198,2219,2223,2228,2238,2242,2247,2258,2262,2267],{"__ignoreMap":240},[244,2194,2195],{"class":246,"line":247},[244,2196,2197],{"class":762},"# Ubuntu/Debian\n",[244,2199,2200,2202,2204,2207,2210,2212,2214,2216],{"class":246,"line":759},[244,2201,251],{"class":250},[244,2203,1172],{"class":254},[244,2205,2206],{"class":254}," update",[244,2208,2209],{"class":744}," && ",[244,2211,251],{"class":250},[244,2213,1172],{"class":254},[244,2215,1770],{"class":254},[244,2217,2218],{"class":254}," fd-find\n",[244,2220,2221],{"class":246,"line":766},[244,2222,1452],{"emptyLinePlaceholder":935},[244,2224,2225],{"class":246,"line":772},[244,2226,2227],{"class":762},"# Fedora\n",[244,2229,2230,2232,2234,2236],{"class":246,"line":784},[244,2231,251],{"class":250},[244,2233,1836],{"class":254},[244,2235,1770],{"class":254},[244,2237,2218],{"class":254},[244,2239,2240],{"class":246,"line":793},[244,2241,1452],{"emptyLinePlaceholder":935},[244,2243,2244],{"class":246,"line":1469},[244,2245,2246],{"class":762},"# Arch Linux\n",[244,2248,2249,2251,2253,2255],{"class":246,"line":1608},[244,2250,251],{"class":250},[244,2252,1861],{"class":254},[244,2254,1864],{"class":261},[244,2256,2257],{"class":254}," fd\n",[244,2259,2260],{"class":246,"line":1613},[244,2261,1452],{"emptyLinePlaceholder":935},[244,2263,2264],{"class":246,"line":1619},[244,2265,2266],{"class":762},"# macOS (brew)\n",[244,2268,2270,2273,2275],{"class":246,"line":2269},11,[244,2271,2272],{"class":250},"brew",[244,2274,1770],{"class":254},[244,2276,2257],{"class":254},"\nПосле установки команда может называться ",[25,2279,2280],{},"fdfind"," (в Debian/Ubuntu) или ",[25,2283,2118],{},[16,2285,2287],{"id":2286},"пошаговая-инструкция","Пошаговая инструкция",[149,2289,2291,2292],{"id":2290},"шаг-1-базовый-синтаксис-команды-find","Шаг 1: Базовый синтаксис команды ",[25,2293,293],{},[21,2295,2296,2297,2299],{},"Команда ",[25,2298,293],{}," имеет универсальный синтаксис:",[235,2301,2303],{"className":237,"code":2302,"language":239,"meta":240,"style":240},"find [путь_для_поиска] [критерий] [действие]\n",[25,2304,2305],{"__ignoreMap":240},[244,2306,2307,2309],{"class":246,"line":247},[244,2308,293],{"class":250},[244,2310,2311],{"class":744}," [путь_для_поиска] [критерий] [действие]\n",[498,2313,2314,2328,2344],{},[62,2315,2316,2321,2322,2324,2325,2327],{},[65,2317,2318],{},[25,2319,2320],{},"[путь_для_поиска]",": Каталог, начиная с которого искать (",[25,2323,96],{}," — текущая папка, ",[25,2326,163],{}," — корень системы).",[62,2329,2330,2335,2336,2339,2340,2343],{},[65,2331,2332],{},[25,2333,2334],{},"[критерий]",": Условие для поиска (имя, размер, дата и т.д.). Можно комбинировать через ",[25,2337,2338],{},"-a"," (И) или ",[25,2341,2342],{},"-o"," (ИЛИ).",[62,2345,2346,2351,2352,2354],{},[65,2347,2348],{},[25,2349,2350],{},"[действие]",": Что делать с найденными файлами. Если не указать, ",[25,2353,293],{}," просто выведет пути.",[21,2356,2357,2359,2360,2363,2364,2366],{},[65,2358,1160],{}," Найти все файлы с расширением ",[25,2361,2362],{},".conf"," в ",[25,2365,2175],{}," и его подкаталогах.",[235,2368,2370],{"className":237,"code":2369,"language":239,"meta":240,"style":240},"find /etc -name \"*.conf\"\n",[25,2371,2372],{"__ignoreMap":240},[244,2373,2374,2376,2379,2381],{"class":246,"line":247},[244,2375,293],{"class":250},[244,2377,2378],{"class":254}," /etc",[244,2380,262],{"class":261},[244,2382,2383],{"class":254}," \"*.conf\"\n",[2385,2386,2387],"blockquote",{},[21,2388,2389,2390,2393,2394,28,2397,2400,2401,96],{},"💡 ",[65,2391,2392],{},"Совет",": Всегда заключайте шаблон в кавычки (",[25,2395,2396],{},"\"",[25,2398,2399],{},"'","), чтобы shell не пытался его раскрывать до передачи ",[25,2402,293],{},[149,2404,2406],{"id":2405},"шаг-2-поиск-по-имени-с-учётом-регистра","Шаг 2: Поиск по имени с учётом регистра",[21,2408,2409,2410,2413,2414,1376],{},"По умолчанию ",[25,2411,2412],{},"-name"," чувствителен к регистру. Для регистронезависимого поиска используйте ",[25,2415,2416],{},"-iname",[235,2418,2420],{"className":237,"code":2419,"language":239,"meta":240,"style":240},"# Найти Readme.md, README.md, readme.MD\nfind /путь/к/проекту -iname \"readme.md\"\n",[25,2421,2422,2427],{"__ignoreMap":240},[244,2423,2424],{"class":246,"line":247},[244,2425,2426],{"class":762},"# Найти Readme.md, README.md, readme.MD\n",[244,2428,2429,2431,2434,2437],{"class":246,"line":759},[244,2430,293],{"class":250},[244,2432,2433],{"class":254}," /путь/к/проекту",[244,2435,2436],{"class":261}," -iname",[244,2438,2439],{"class":254}," \"readme.md\"\n",[149,2441,2443],{"id":2442},"шаг-3-поиск-по-типу-файла","Шаг 3: Поиск по типу файла",[21,2445,2446,2447,2450],{},"Используйте ",[25,2448,2449],{},"-type"," для фильтрации по типу объекта файловой системы:",[498,2452,2453,2459,2465,2471,2477],{},[62,2454,2455,2458],{},[25,2456,2457],{},"f"," — обычный файл",[62,2460,2461,2464],{},[25,2462,2463],{},"d"," — каталог",[62,2466,2467,2470],{},[25,2468,2469],{},"l"," — символьная ссылка",[62,2472,2473,2476],{},[25,2474,2475],{},"c"," — символьное устройство",[62,2478,2479,2482],{},[25,2480,2481],{},"b"," — блочное устройство",[21,2484,2485,2487,2488,1376],{},[65,2486,1160],{}," Найти только каталоги с именем ",[25,2489,2490],{},"logs",[235,2492,2494],{"className":237,"code":2493,"language":239,"meta":240,"style":240},"find / -type d -name \"logs\"\n",[25,2495,2496],{"__ignoreMap":240},[244,2497,2498,2500,2502,2505,2508,2510],{"class":246,"line":247},[244,2499,293],{"class":250},[244,2501,258],{"class":254},[244,2503,2504],{"class":261}," -type",[244,2506,2507],{"class":254}," d",[244,2509,262],{"class":261},[244,2511,2512],{"class":254}," \"logs\"\n",[149,2514,2516],{"id":2515},"шаг-4-комбинирование-критериев-логические-операторы","Шаг 4: Комбинирование критериев (Логические операторы)",[21,2518,2519],{},"Для сложных запросов объединяйте условия:",[498,2521,2522,2531,2536],{},[62,2523,2524,2526,2527,2530],{},[25,2525,2338],{}," (И) — ",[65,2528,2529],{},"по умолчанию",", если условия идут подряд.",[62,2532,2533,2535],{},[25,2534,2342],{}," (ИЛИ) — альтернатива.",[62,2537,2538,28,2541,2544],{},[25,2539,2540],{},"!",[25,2542,2543],{},"-not"," — отрицание.",[21,2546,2547,2549,2550,2553,2554,2556,2557,2560],{},[65,2548,1160],{}," Найти все ",[25,2551,2552],{},".log"," файлы в ",[25,2555,91],{},", размер которых больше 10 МБ ",[65,2558,2559],{},"И"," изменявшиеся за последние 7 дней:",[235,2562,2564],{"className":237,"code":2563,"language":239,"meta":240,"style":240},"find /var/log -name \"*.log\" -size +10M -mtime -7\n",[25,2565,2566],{"__ignoreMap":240},[244,2567,2568,2570,2573,2575,2578,2581,2584,2587],{"class":246,"line":247},[244,2569,293],{"class":250},[244,2571,2572],{"class":254}," /var/log",[244,2574,262],{"class":261},[244,2576,2577],{"class":254}," \"*.log\"",[244,2579,2580],{"class":261}," -size",[244,2582,2583],{"class":254}," +10M",[244,2585,2586],{"class":261}," -mtime",[244,2588,2589],{"class":261}," -7\n",[21,2591,2592,2595,2596,2599,2600,2599,2603,2606],{},[65,2593,2594],{},"Пример 2:"," Найти файлы с расширением ",[25,2597,2598],{},".tmp"," ",[65,2601,2602],{},"ИЛИ",[25,2604,2605],{},".temp"," в домашнем каталоге:",[235,2608,2610],{"className":237,"code":2609,"language":239,"meta":240,"style":240},"find ~ -name \"*.tmp\" -o -name \"*.temp\"\n",[25,2611,2612],{"__ignoreMap":240},[244,2613,2614,2616,2619,2621,2624,2627,2629],{"class":246,"line":247},[244,2615,293],{"class":250},[244,2617,2618],{"class":254}," ~",[244,2620,262],{"class":261},[244,2622,2623],{"class":254}," \"*.tmp\"",[244,2625,2626],{"class":261}," -o",[244,2628,262],{"class":261},[244,2630,2631],{"class":254}," \"*.temp\"\n",[2385,2633,2634,2662],{},[21,2635,2636,2637,2640,2641,2643,2644,2647,2648,2651,2652,2655,2656,28,2659,1376],{},"⚠️ ",[65,2638,2639],{},"Важно",": При использовании ",[25,2642,2342],{}," часто нужно группировать условия скобками ",[25,2645,2646],{},"\\( ... \\)",", чтобы задать приоритет. Например, ищем ",[25,2649,2650],{},".bak"," файлы ",[65,2653,2654],{},"ВЛОЖЕННЫЕ"," в каталогах ",[25,2657,2658],{},"cache",[25,2660,2661],{},"temp",[235,2663,2665],{"className":237,"code":2664,"language":239,"meta":240,"style":240},"find / -type d \\( -name \"cache\" -o -name \"temp\" \\) -exec find {} -name \"*.bak\" \\;\n",[25,2666,2667],{"__ignoreMap":240},[244,2668,2669,2671,2673,2675,2677,2680,2682,2685,2687,2689,2692,2695,2698,2700,2703,2705,2708],{"class":246,"line":247},[244,2670,293],{"class":250},[244,2672,258],{"class":254},[244,2674,2504],{"class":261},[244,2676,2507],{"class":254},[244,2678,2679],{"class":261}," \\(",[244,2681,262],{"class":261},[244,2683,2684],{"class":254}," \"cache\"",[244,2686,2626],{"class":261},[244,2688,262],{"class":261},[244,2690,2691],{"class":254}," \"temp\"",[244,2693,2694],{"class":261}," \\)",[244,2696,2697],{"class":261}," -exec",[244,2699,255],{"class":254},[244,2701,2702],{"class":254}," {}",[244,2704,262],{"class":261},[244,2706,2707],{"class":254}," \"*.bak\"",[244,2709,2710],{"class":261}," \\;\n",[149,2712,2714],{"id":2713},"шаг-5-поиск-по-размеру-файла","Шаг 5: Поиск по размеру файла",[21,2716,276,2717,2720],{},[25,2718,2719],{},"-size"," использует суффиксы:",[498,2722,2723,2728,2734,2740],{},[62,2724,2725,2727],{},[25,2726,2475],{}," — байты",[62,2729,2730,2733],{},[25,2731,2732],{},"k"," — килобайты (1024 байта)",[62,2735,2736,2739],{},[25,2737,2738],{},"M"," — мегабайты",[62,2741,2742,2745],{},[25,2743,2744],{},"G"," — гигабайты",[21,2747,2748],{},"Знаки:",[498,2750,2751,2757,2763],{},[62,2752,2753,2756],{},[25,2754,2755],{},"+"," — больше указанного",[62,2758,2759,2762],{},[25,2760,2761],{},"-"," — меньше указанного",[62,2764,2765],{},"Нет знака — точное совпадение (редко используется)",[21,2767,2768,2770],{},[65,2769,1160],{}," Найти файлы, занимающие ровно 0 байт (пустые):",[235,2772,2774],{"className":237,"code":2773,"language":239,"meta":240,"style":240},"find /tmp -size 0c\n",[25,2775,2776],{"__ignoreMap":240},[244,2777,2778,2780,2783,2785],{"class":246,"line":247},[244,2779,293],{"class":250},[244,2781,2782],{"class":254}," /tmp",[244,2784,2580],{"class":261},[244,2786,2787],{"class":254}," 0c\n",[21,2789,2790,2792],{},[65,2791,1160],{}," Найти файлы от 500 МБ до 2 ГБ:",[235,2794,2796],{"className":237,"code":2795,"language":239,"meta":240,"style":240},"find / -size +500M -size -2G\n",[25,2797,2798],{"__ignoreMap":240},[244,2799,2800,2802,2804,2806,2809,2811],{"class":246,"line":247},[244,2801,293],{"class":250},[244,2803,258],{"class":254},[244,2805,2580],{"class":261},[244,2807,2808],{"class":254}," +500M",[244,2810,2580],{"class":261},[244,2812,2813],{"class":261}," -2G\n",[149,2815,2817],{"id":2816},"шаг-6-поиск-по-дате-и-времени","Шаг 6: Поиск по дате и времени",[21,2819,2820,2822,2823,2827],{},[25,2821,293],{}," работает с ",[2824,2825,2826],"em",{},"днями"," (не часами) по умолчанию. Есть три основных критерия:",[498,2829,2830,2844,2854],{},[62,2831,2832,2835,2836,2839,2840,2843],{},[25,2833,2834],{},"-mtime N"," — когда ",[65,2837,2838],{},"содержимое"," файла было изменено N ",[2824,2841,2842],{},"дняй"," назад.",[62,2845,2846,2849,2850,2853],{},[25,2847,2848],{},"-atime N"," — когда файл был ",[65,2851,2852],{},"доступен"," (прочитан, выполнен) N дней назад.",[62,2855,2856,2835,2859,2862],{},[25,2857,2858],{},"-ctime N",[65,2860,2861],{},"метаданные"," (права, владелец) были изменены N дней назад.",[21,2864,2865],{},[65,2866,2867],{},"Пояснение про дни:",[498,2869,2870,2880,2889],{},[62,2871,2872,2875,2876,2879],{},[25,2873,2874],{},"-mtime 0"," — изменялось ",[65,2877,2878],{},"сегодня"," (в последние 24 часа).",[62,2881,2882,2875,2885,2888],{},[25,2883,2884],{},"-mtime -1",[65,2886,2887],{},"менее 24 часов назад"," (аналог \"вчера и сегодня\").",[62,2890,2891,2875,2894,2897],{},[25,2892,2893],{},"-mtime +1",[65,2895,2896],{},"более 48 часов назад"," (старше 2 дней).",[21,2899,2900,2901,176,2904,2907],{},"Для поиска по ",[65,2902,2903],{},"часам",[65,2905,2906],{},"минутам"," используйте:",[498,2909,2910,2916,2922],{},[62,2911,2912,2915],{},[25,2913,2914],{},"-mmin N"," — минуты с последнего изменения.",[62,2917,2918,2921],{},[25,2919,2920],{},"-amin N"," — минуты с последнего доступа.",[62,2923,2924,2927],{},[25,2925,2926],{},"-cmin N"," — минуты с последнего изменения метаданных.",[21,2929,2930],{},[65,2931,2932],{},"Практические примеры:",[235,2934,2936],{"className":237,"code":2935,"language":239,"meta":240,"style":240},"# Найти все файлы, изменённые за последние 2 часа (120 минут)\nfind /var/www -mmin -120\n\n# Найти файлы, к которым не обращались более 30 дней (возможно, можно архивировать)\nfind /home -atime +30\n\n# Найти файлы, созданные вчера (примерно 24-48 часов назад)\nfind /backup -mtime 1\n",[25,2937,2938,2943,2956,2960,2965,2978,2982,2987],{"__ignoreMap":240},[244,2939,2940],{"class":246,"line":247},[244,2941,2942],{"class":762},"# Найти все файлы, изменённые за последние 2 часа (120 минут)\n",[244,2944,2945,2947,2950,2953],{"class":246,"line":759},[244,2946,293],{"class":250},[244,2948,2949],{"class":254}," /var/www",[244,2951,2952],{"class":261}," -mmin",[244,2954,2955],{"class":261}," -120\n",[244,2957,2958],{"class":246,"line":766},[244,2959,1452],{"emptyLinePlaceholder":935},[244,2961,2962],{"class":246,"line":772},[244,2963,2964],{"class":762},"# Найти файлы, к которым не обращались более 30 дней (возможно, можно архивировать)\n",[244,2966,2967,2969,2972,2975],{"class":246,"line":784},[244,2968,293],{"class":250},[244,2970,2971],{"class":254}," /home",[244,2973,2974],{"class":261}," -atime",[244,2976,2977],{"class":254}," +30\n",[244,2979,2980],{"class":246,"line":793},[244,2981,1452],{"emptyLinePlaceholder":935},[244,2983,2984],{"class":246,"line":1469},[244,2985,2986],{"class":762},"# Найти файлы, созданные вчера (примерно 24-48 часов назад)\n",[244,2988,2989,2991,2994,2996],{"class":246,"line":1608},[244,2990,293],{"class":250},[244,2992,2993],{"class":254}," /backup",[244,2995,2586],{"class":261},[244,2997,790],{"class":261},[702,2999],{},[149,3001,3003],{"id":3002},"шаг-7-поиск-по-правам-доступа-и-владельцу","Шаг 7: Поиск по правам доступа и владельцу",[21,3005,3006],{},[65,3007,3008],{},"По правам (perm):",[498,3010,3011,3020,3042],{},[62,3012,3013,3016,3017,76],{},[25,3014,3015],{},"-perm mode"," — точное совпадение прав (например, ",[25,3018,3019],{},"-perm 644",[62,3021,3022,3025,3026,3029,3030,3033,3034,3037,3038,3041],{},[25,3023,3024],{},"-perm -mode"," — ",[65,3027,3028],{},"все"," биты из ",[25,3031,3032],{},"mode"," должны быть установлены (логическое И). Например, ",[25,3035,3036],{},"-perm -u=x"," найдёт файлы, у которых ",[65,3039,3040],{},"владелец"," имеет право на выполнение, независимо от других прав.",[62,3043,3044,3025,3047,3050,3051,3053,3054,3057,3058,3060],{},[25,3045,3046],{},"-perm /mode",[65,3048,3049],{},"хотя бы один"," бит из ",[25,3052,3032],{}," установлен (логическое ИЛИ). Например, ",[25,3055,3056],{},"-perm /u=x,g=w"," найдёт файлы, где владелец может выполнять ",[65,3059,2602],{}," группа может писать.",[21,3062,3063,3065,3066,3069,3070,1376],{},[65,3064,1160],{}," Найти все исполняемые файлы (",[25,3067,3068],{},"x"," для кого-либо) в ",[25,3071,3072],{},"/usr/bin",[235,3074,3076],{"className":237,"code":3075,"language":239,"meta":240,"style":240},"find /usr/bin -perm /111\n",[25,3077,3078],{"__ignoreMap":240},[244,3079,3080,3082,3085,3088],{"class":246,"line":247},[244,3081,293],{"class":250},[244,3083,3084],{"class":254}," /usr/bin",[244,3086,3087],{"class":261}," -perm",[244,3089,3090],{"class":254}," /111\n",[21,3092,3093],{},"Или, что то же самое:",[235,3095,3097],{"className":237,"code":3096,"language":239,"meta":240,"style":240},"find /usr/bin -perm /a=x\n",[25,3098,3099],{"__ignoreMap":240},[244,3100,3101,3103,3105,3107],{"class":246,"line":247},[244,3102,293],{"class":250},[244,3104,3084],{"class":254},[244,3106,3087],{"class":261},[244,3108,3109],{"class":254}," /a=x\n",[21,3111,3112],{},[65,3113,3114],{},"По владельцу/группе:",[498,3116,3117,3123],{},[62,3118,3119,3122],{},[25,3120,3121],{},"-user username"," — файлы, принадлежащие пользователю.",[62,3124,3125,3128],{},[25,3126,3127],{},"-group groupname"," — файлы, принадлежащие группе.",[21,3130,3131,3133,3134,3137],{},[65,3132,1160],{}," Найти все файлы, принадлежащие пользователю ",[25,3135,3136],{},"www-data"," (часто для веб-серверов):",[235,3139,3141],{"className":237,"code":3140,"language":239,"meta":240,"style":240},"find /var -user www-data\n",[25,3142,3143],{"__ignoreMap":240},[244,3144,3145,3147,3150,3153],{"class":246,"line":247},[244,3146,293],{"class":250},[244,3148,3149],{"class":254}," /var",[244,3151,3152],{"class":261}," -user",[244,3154,3155],{"class":254}," www-data\n",[149,3157,3159],{"id":3158},"шаг-8-выполнение-действий-с-найденными-файлами","Шаг 8: Выполнение действий с найденными файлами",[21,3161,3162,3163,28,3166,96],{},"Критерии поиска часто комбинируют с действиями через ",[25,3164,3165],{},"-exec",[25,3167,3168],{},"-delete",[21,3170,3171,3175,3176,3179,3180,96],{},[65,3172,3173],{},[25,3174,3165],{},": Выполняет указанную команду для каждого найденного файла. ",[25,3177,3178],{},"{}"," заменяется на имя файла. Завершается ",[25,3181,3182],{},"\\;",[235,3184,3186],{"className":237,"code":3185,"language":239,"meta":240,"style":240},"# Найти все .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,3187,3188,3193,3212,3216,3221,3240,3244,3249],{"__ignoreMap":240},[244,3189,3190],{"class":246,"line":247},[244,3191,3192],{"class":762},"# Найти все .tmp файлы и удалить их (ОСТОРОЖНО!)\n",[244,3194,3195,3197,3199,3201,3203,3205,3208,3210],{"class":246,"line":759},[244,3196,293],{"class":250},[244,3198,2782],{"class":254},[244,3200,262],{"class":261},[244,3202,2623],{"class":254},[244,3204,2697],{"class":261},[244,3206,3207],{"class":254}," rm",[244,3209,2702],{"class":254},[244,3211,2710],{"class":261},[244,3213,3214],{"class":246,"line":766},[244,3215,1452],{"emptyLinePlaceholder":935},[244,3217,3218],{"class":246,"line":772},[244,3219,3220],{"class":762},"# Найти все .log файлы и сжать их gzip\n",[244,3222,3223,3225,3227,3229,3231,3233,3236,3238],{"class":246,"line":784},[244,3224,293],{"class":250},[244,3226,2572],{"class":254},[244,3228,262],{"class":261},[244,3230,2577],{"class":254},[244,3232,2697],{"class":261},[244,3234,3235],{"class":254}," gzip",[244,3237,2702],{"class":254},[244,3239,2710],{"class":261},[244,3241,3242],{"class":246,"line":793},[244,3243,1452],{"emptyLinePlaceholder":935},[244,3245,3246],{"class":246,"line":1469},[244,3247,3248],{"class":762},"# Найти файлы, доступные для записи группе, и вывести их права\n",[244,3250,3251,3253,3255,3257,3260,3262,3265,3267,3270,3272,3274],{"class":246,"line":1608},[244,3252,293],{"class":250},[244,3254,258],{"class":254},[244,3256,2504],{"class":261},[244,3258,3259],{"class":254}," f",[244,3261,3087],{"class":261},[244,3263,3264],{"class":261}," -g=w",[244,3266,2697],{"class":261},[244,3268,3269],{"class":254}," ls",[244,3271,384],{"class":261},[244,3273,2702],{"class":254},[244,3275,2710],{"class":261},[21,3277,3278,3282,3283,3286,3287,96],{},[65,3279,3280],{},[25,3281,3168],{},": Удаляет найденные файлы. ",[65,3284,3285],{},"Будьте предельно осторожны!"," Сначала проверьте результат без ",[25,3288,3168],{},[235,3290,3292],{"className":237,"code":3291,"language":239,"meta":240,"style":240},"# Безопасный способ: сначала посмотреть, что будет удалено\nfind /tmp -name \"*.cache\" -ls\n\n# Затем, если всё верно, удалить\nfind /tmp -name \"*.cache\" -delete\n",[25,3293,3294,3299,3313,3317,3322],{"__ignoreMap":240},[244,3295,3296],{"class":246,"line":247},[244,3297,3298],{"class":762},"# Безопасный способ: сначала посмотреть, что будет удалено\n",[244,3300,3301,3303,3305,3307,3310],{"class":246,"line":759},[244,3302,293],{"class":250},[244,3304,2782],{"class":254},[244,3306,262],{"class":261},[244,3308,3309],{"class":254}," \"*.cache\"",[244,3311,3312],{"class":261}," -ls\n",[244,3314,3315],{"class":246,"line":766},[244,3316,1452],{"emptyLinePlaceholder":935},[244,3318,3319],{"class":246,"line":772},[244,3320,3321],{"class":762},"# Затем, если всё верно, удалить\n",[244,3323,3324,3326,3328,3330,3332],{"class":246,"line":784},[244,3325,293],{"class":250},[244,3327,2782],{"class":254},[244,3329,262],{"class":261},[244,3331,3309],{"class":254},[244,3333,3334],{"class":261}," -delete\n",[21,3336,3337,3342,3343,3345],{},[65,3338,3339],{},[25,3340,3341],{},"-ok",": Аналог ",[25,3344,3165],{},", но запрашивает подтверждение перед выполнением каждой команды.",[235,3347,3349],{"className":237,"code":3348,"language":239,"meta":240,"style":240},"find . -name \"*.bak\" -ok rm {} \\;\n# Будет спрошено: \u003C rm ... > ? (y/n)\n",[25,3350,3351,3370],{"__ignoreMap":240},[244,3352,3353,3355,3357,3359,3361,3364,3366,3368],{"class":246,"line":247},[244,3354,293],{"class":250},[244,3356,296],{"class":254},[244,3358,262],{"class":261},[244,3360,2707],{"class":254},[244,3362,3363],{"class":261}," -ok",[244,3365,3207],{"class":254},[244,3367,2702],{"class":254},[244,3369,2710],{"class":261},[244,3371,3372],{"class":246,"line":759},[244,3373,3374],{"class":762},"# Будет спрошено: \u003C rm ... > ? (y/n)\n",[149,3376,3378,3379,176,3381],{"id":3377},"шаг-9-альтернативы-locate-и-fd","Шаг 9: Альтернативы: ",[25,3380,307],{},[25,3382,2118],{},[1745,3384,3386,3388],{"id":3385},"locate-быстрый-поиск-по-базе-данных",[25,3387,307],{}," — быстрый поиск по базе данных",[21,3390,3391,3392,3394,3395,76],{},"Работает в разы быстрее ",[25,3393,293],{},", так как ищет не в файловой системе, а в обновляемой раз в сутки базе данных (",[25,3396,3397],{},"/var/lib/mlocate/mlocate.db",[235,3399,3401],{"className":237,"code":3400,"language":239,"meta":240,"style":240},"locate имя_файла      # Простой поиск\nlocate -i имя_файла   # Без учёта регистра\nlocate -c имя_файла   # Только количество найденных файлов\n",[25,3402,3403,3413,3425],{"__ignoreMap":240},[244,3404,3405,3407,3410],{"class":246,"line":247},[244,3406,307],{"class":250},[244,3408,3409],{"class":254}," имя_файла",[244,3411,3412],{"class":762},"      # Простой поиск\n",[244,3414,3415,3417,3420,3422],{"class":246,"line":759},[244,3416,307],{"class":250},[244,3418,3419],{"class":261}," -i",[244,3421,3409],{"class":254},[244,3423,3424],{"class":762},"   # Без учёта регистра\n",[244,3426,3427,3429,3432,3434],{"class":246,"line":766},[244,3428,307],{"class":250},[244,3430,3431],{"class":261}," -c",[244,3433,3409],{"class":254},[244,3435,3436],{"class":762},"   # Только количество найденных файлов\n",[21,3438,3439,3442,3443,3445],{},[65,3440,3441],{},"Обновление базы вручную"," (требует ",[25,3444,251],{},"):",[235,3447,3449],{"className":237,"code":3448,"language":239,"meta":240,"style":240},"sudo updatedb\n",[25,3450,3451],{"__ignoreMap":240},[244,3452,3453,3455],{"class":246,"line":247},[244,3454,251],{"class":250},[244,3456,3457],{"class":254}," updatedb\n",[2385,3459,3460],{},[21,3461,2636,3462,3464,3465,3467,3468,3471,3472,96],{},[65,3463,2639],{},": ",[25,3466,307],{}," не видит файлы, созданные после последнего ",[25,3469,3470],{},"updatedb",". Для поиска совсем новых файлов используйте ",[25,3473,293],{},[1745,3475,3477,3479,3480],{"id":3476},"fd-современная-быстрая-и-удобная-замена-find",[25,3478,2118],{}," — современная, быстрая и удобная замена ",[25,3481,293],{},[21,3483,3484,3485,3488],{},"Упрощённый синтаксис, цветной вывод, игнорирование файлов из ",[25,3486,3487],{},".gitignore"," по умолчанию.",[235,3490,3492],{"className":237,"code":3491,"language":239,"meta":240,"style":240},"fd шаблон             # Ищет в текущей директории (рекурсивно)\nfd -e js              # Ищет файлы с расширением .js\nfd -g '*.py'          # Глобbing-шаблон (как в shell)\nfd -s +1M             # По размеру (больше 1 МБ)\nfd -t f               # Только файлы (-t d для каталогов)\nfd -I                 # Не игнорировать скрытые файлы (.gitignore по умолчанию)\n",[25,3493,3494,3504,3517,3530,3543,3554],{"__ignoreMap":240},[244,3495,3496,3498,3501],{"class":246,"line":247},[244,3497,2118],{"class":250},[244,3499,3500],{"class":254}," шаблон",[244,3502,3503],{"class":762},"             # Ищет в текущей директории (рекурсивно)\n",[244,3505,3506,3508,3511,3514],{"class":246,"line":759},[244,3507,2118],{"class":250},[244,3509,3510],{"class":261}," -e",[244,3512,3513],{"class":254}," js",[244,3515,3516],{"class":762},"              # Ищет файлы с расширением .js\n",[244,3518,3519,3521,3524,3527],{"class":246,"line":766},[244,3520,2118],{"class":250},[244,3522,3523],{"class":261}," -g",[244,3525,3526],{"class":254}," '*.py'",[244,3528,3529],{"class":762},"          # Глобbing-шаблон (как в shell)\n",[244,3531,3532,3534,3537,3540],{"class":246,"line":772},[244,3533,2118],{"class":250},[244,3535,3536],{"class":261}," -s",[244,3538,3539],{"class":254}," +1M",[244,3541,3542],{"class":762},"             # По размеру (больше 1 МБ)\n",[244,3544,3545,3547,3549,3551],{"class":246,"line":784},[244,3546,2118],{"class":250},[244,3548,667],{"class":261},[244,3550,3259],{"class":254},[244,3552,3553],{"class":762},"               # Только файлы (-t d для каталогов)\n",[244,3555,3556,3558,3561],{"class":246,"line":793},[244,3557,2118],{"class":250},[244,3559,3560],{"class":261}," -I",[244,3562,3563],{"class":762},"                 # Не игнорировать скрытые файлы (.gitignore по умолчанию)\n",[21,3565,3566,3568,3569,3572],{},[65,3567,1160],{}," Найти все файлы ",[25,3570,3571],{},"Dockerfile"," (с учётом регистра) в проекте:",[235,3574,3576],{"className":237,"code":3575,"language":239,"meta":240,"style":240},"fd Dockerfile\n",[25,3577,3578],{"__ignoreMap":240},[244,3579,3580,3582],{"class":246,"line":247},[244,3581,2118],{"class":250},[244,3583,3584],{"class":254}," Dockerfile\n",[21,3586,3587,3589],{},[65,3588,1160],{}," Найти Python-файлы, изменённые за последние неделю:",[235,3591,3593],{"className":237,"code":3592,"language":239,"meta":240,"style":240},"fd -e py -c time -1w\n",[25,3594,3595],{"__ignoreMap":240},[244,3596,3597,3599,3601,3604,3606,3609],{"class":246,"line":247},[244,3598,2118],{"class":250},[244,3600,3510],{"class":261},[244,3602,3603],{"class":254}," py",[244,3605,3431],{"class":261},[244,3607,3608],{"class":254}," time",[244,3610,3611],{"class":261}," -1w\n",[16,3613,3615],{"id":3614},"проверка-результата","Проверка результата",[21,3617,3618,3619,163,3621,163,3623,3625],{},"После выполнения команды ",[25,3620,293],{},[25,3622,307],{},[25,3624,2118],{}," убедитесь, что вывод соответствует ожиданиям:",[59,3627,3628,3635,3648,3663],{},[62,3629,3630,3631,3634],{},"Проверьте ",[65,3632,3633],{},"полные пути"," найденных файлов. Не нашли ли вы лишнее?",[62,3636,3637,3638,3641,3642,2363,3645,3647],{},"Для критичных операций (удаление, изменение) сначала ",[65,3639,3640],{},"просмотрите список"," без действий (",[25,3643,3644],{},"-ls",[25,3646,293],{}," или просто вывод).",[62,3649,3650,3651,3654,3655,3657,3658,3660,3661,96],{},"Убедитесь, что ",[65,3652,3653],{},"результаты не устарели"," (особенно для ",[25,3656,307],{},"). Если ищете недавно созданный файл, а ",[25,3659,307],{}," его не находит — используйте ",[25,3662,293],{},[62,3664,3630,3665,3668,3669,3671],{},[65,3666,3667],{},"права доступа",". Если команда ничего не нашла, попробуйте запустить с ",[25,3670,251],{}," (если ищете в системных каталогах).",[16,3673,3675],{"id":3674},"возможные-проблемы","Возможные проблемы",[149,3677,3679,3680,3682],{"id":3678},"проблема-find-ничего-не-находит-хотя-файл-точно-существует","Проблема: ",[25,3681,293],{}," ничего не находит, хотя файл точно существует.",[21,3684,3685],{},[65,3686,3687],{},"Решение:",[59,3689,3690,3699,3711,3726],{},[62,3691,3630,3692,3695,3696,3698],{},[65,3693,3694],{},"правильность пути"," для поиска. Убедитесь, что каталог, где лежит файл, указан верно (",[25,3697,96],{}," для текущей папки).",[62,3700,3630,3701,3704,3705,3707,3708,3710],{},[65,3702,3703],{},"регистр"," в имени файла при использовании ",[25,3706,2412],{},". Используйте ",[25,3709,2416],{}," для регистронезависимого поиска.",[62,3712,3630,3713,3715,3716,3719,3720,3722,3723,96],{},[65,3714,3667],{}," на каталоги выше по иерархии. Если у вас нет прав на чтение (",[25,3717,3718],{},"r",") каталога, ",[25,3721,293],{}," не сможет в него заглянуть. Попробуйте ",[25,3724,3725],{},"sudo find ...",[62,3727,3728,3729,3732,3733,3736],{},"Убедитесь, что файл не является ",[65,3730,3731],{},"символьной ссылкой",", указывающей в недоступное место. Используйте ",[25,3734,3735],{},"-type l"," для поиска ссылок.",[149,3738,3679,3740,3742],{"id":3739},"проблема-find-работает-слишком-медленно-на-больших-дисках",[25,3741,293],{}," работает слишком медленно на больших дисках.",[21,3744,3745],{},[65,3746,3687],{},[59,3748,3749,3767,3774,3787],{},[62,3750,3751,3754,3755,3758,3759,3762,3763,3766],{},[65,3752,3753],{},"Ограничьте глубину поиска"," с помощью ",[25,3756,3757],{},"-maxdepth N"," (максимум N уровней вложенности) и ",[25,3760,3761],{},"-mindepth N"," (минимум N уровней). Например, ",[25,3764,3765],{},"find / -maxdepth 3 -name \"*.log\""," ищет только в первых трёх подкаталогах корня.",[62,3768,3769,3773],{},[65,3770,2446,3771],{},[25,3772,307],{}," для поиска по имени, если актуальность данных в базе (обычно сутки) вас устраивает.",[62,3775,3776,3780,3781,36,3784,76],{},[65,3777,2446,3778],{},[25,3779,2118],{},", который оптимизирован для скорости и по умолчанию игнорирует ненужные каталоги (",[25,3782,3783],{},".git",[25,3785,3786],{},"node_modules",[62,3788,3789,3792,3793,3796,3797,76],{},[65,3790,3791],{},"Сузьте путь поиска",". Вместо ",[25,3794,3795],{},"find /"," ищите в конкретном разделе (",[25,3798,3799],{},"find /home",[149,3801,3803],{"id":3802},"проблема-нужно-найти-файлы-содержащие-определённый-текст","Проблема: Нужно найти файлы, содержащие определённый текст.",[21,3805,3806,2599,3808,3810,3811,1376],{},[65,3807,3687],{},[25,3809,293],{}," для этого не предназначен. Используйте ",[25,3812,3813],{},"grep",[235,3815,3817],{"className":237,"code":3816,"language":239,"meta":240,"style":240},"grep -r \"искомый_текст\" /путь/к/поиску/\n",[25,3818,3819],{"__ignoreMap":240},[244,3820,3821,3823,3826,3829],{"class":246,"line":247},[244,3822,3813],{"class":250},[244,3824,3825],{"class":261}," -r",[244,3827,3828],{"class":254}," \"искомый_текст\"",[244,3830,3831],{"class":254}," /путь/к/поиску/\n",[21,3833,3834],{},"Для поиска только среди файлов с определённым расширением:",[235,3836,3838],{"className":237,"code":3837,"language":239,"meta":240,"style":240},"grep -r --include=\"*.log\" \"ERROR\" /var/log/\n",[25,3839,3840],{"__ignoreMap":240},[244,3841,3842,3844,3846,3849,3852,3855],{"class":246,"line":247},[244,3843,3813],{"class":250},[244,3845,3825],{"class":261},[244,3847,3848],{"class":261}," --include=",[244,3850,3851],{"class":254},"\"*.log\"",[244,3853,3854],{"class":254}," \"ERROR\"",[244,3856,3857],{"class":254}," /var/log/\n",[21,3859,3860,3861,176,3863,1376],{},"Или комбинируйте ",[25,3862,293],{},[25,3864,3813],{},[235,3866,3868],{"className":237,"code":3867,"language":239,"meta":240,"style":240},"find . -name \"*.py\" -exec grep -l \"def main\" {} \\;\n# Находит все .py файлы, содержащие строку \"def main\", и выводит их имена.\n",[25,3869,3870,3894],{"__ignoreMap":240},[244,3871,3872,3874,3876,3878,3881,3883,3885,3887,3890,3892],{"class":246,"line":247},[244,3873,293],{"class":250},[244,3875,296],{"class":254},[244,3877,262],{"class":261},[244,3879,3880],{"class":254}," \"*.py\"",[244,3882,2697],{"class":261},[244,3884,587],{"class":254},[244,3886,384],{"class":261},[244,3888,3889],{"class":254}," \"def main\"",[244,3891,2702],{"class":254},[244,3893,2710],{"class":261},[244,3895,3896],{"class":246,"line":759},[244,3897,3898],{"class":762},"# Находит все .py файлы, содержащие строку \"def main\", и выводит их имена.\n",[149,3900,3679,3902,3904],{"id":3901},"проблема-find-выводит-очень-много-результатов-нужно-только-количество",[25,3903,293],{}," выводит очень много результатов, нужно только количество.",[21,3906,3907,3909,3910,3913],{},[65,3908,3687],{}," Добавьте ",[25,3911,3912],{},"| wc -l"," (pipe to word count, lines):",[235,3915,3917],{"className":237,"code":3916,"language":239,"meta":240,"style":240},"find /var/log -name \"*.log\" | wc -l\n",[25,3918,3919],{"__ignoreMap":240},[244,3920,3921,3923,3925,3927,3929,3931,3934],{"class":246,"line":247},[244,3922,293],{"class":250},[244,3924,2572],{"class":254},[244,3926,262],{"class":261},[244,3928,2577],{"class":254},[244,3930,584],{"class":268},[244,3932,3933],{"class":250}," wc",[244,3935,3936],{"class":261}," -l\n",[21,3938,3939,3940,2599,3942,3945],{},"Или используйте встроенную опцию ",[25,3941,293],{},[25,3943,3944],{},"-printf '.' | wc -c"," (более быстрее для огромного количества файлов).",[149,3947,3949],{"id":3948},"проблема-нужно-найти-и-обработать-файлы-с-пробелами-или-спецсимволами-в-именах","Проблема: Нужно найти и обработать файлы с пробелами или спецсимволами в именах.",[21,3951,3952,3954,3955,28,3957,3960,3961,3964,3965,3968],{},[65,3953,3687],{}," Всегда используйте ",[25,3956,3165],{},[25,3958,3959],{},"-print0"," в связке с ",[25,3962,3963],{},"xargs -0",". Простой вывод (",[25,3966,3967],{},"find . -name \"*.txt\"",") может сломаться при пробелах.",[235,3970,3972],{"className":237,"code":3971,"language":239,"meta":240,"style":240},"# Безопасная обработка с помощью xargs\nfind . -name \"*.txt\" -print0 | xargs -0 rm\n\n# Или с помощью -exec (более безопасно)\nfind . -name \"*.txt\" -exec rm {} \\;\n",[25,3973,3974,3979,4003,4007,4012],{"__ignoreMap":240},[244,3975,3976],{"class":246,"line":247},[244,3977,3978],{"class":762},"# Безопасная обработка с помощью xargs\n",[244,3980,3981,3983,3985,3987,3989,3992,3994,3997,4000],{"class":246,"line":759},[244,3982,293],{"class":250},[244,3984,296],{"class":254},[244,3986,262],{"class":261},[244,3988,353],{"class":254},[244,3990,3991],{"class":261}," -print0",[244,3993,584],{"class":268},[244,3995,3996],{"class":250}," xargs",[244,3998,3999],{"class":261}," -0",[244,4001,4002],{"class":254}," rm\n",[244,4004,4005],{"class":246,"line":766},[244,4006,1452],{"emptyLinePlaceholder":935},[244,4008,4009],{"class":246,"line":772},[244,4010,4011],{"class":762},"# Или с помощью -exec (более безопасно)\n",[244,4013,4014,4016,4018,4020,4022,4024,4026,4028],{"class":246,"line":784},[244,4015,293],{"class":250},[244,4017,296],{"class":254},[244,4019,262],{"class":261},[244,4021,353],{"class":254},[244,4023,2697],{"class":261},[244,4025,3207],{"class":254},[244,4027,2702],{"class":254},[244,4029,2710],{"class":261},[21,4031,276,4032,4034,4035,4038,4039,4041],{},[25,4033,3959],{}," выводит имена, разделённые NUL-символом (",[25,4036,4037],{},"\\0","), а ",[25,4040,3963],{}," корректно их обрабатывает.",[872,4043,4044],{},"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":240,"searchDepth":759,"depth":759,"links":4046},[4047,4048,4049,4062,4063],{"id":2107,"depth":759,"text":2108},{"id":2146,"depth":759,"text":2147},{"id":2286,"depth":759,"text":2287,"children":4050},[4051,4053,4054,4055,4056,4057,4058,4059,4060],{"id":2290,"depth":766,"text":4052},"Шаг 1: Базовый синтаксис команды find",{"id":2405,"depth":766,"text":2406},{"id":2442,"depth":766,"text":2443},{"id":2515,"depth":766,"text":2516},{"id":2713,"depth":766,"text":2714},{"id":2816,"depth":766,"text":2817},{"id":3002,"depth":766,"text":3003},{"id":3158,"depth":766,"text":3159},{"id":3377,"depth":766,"text":4061},"Шаг 9: Альтернативы: locate и fd",{"id":3614,"depth":759,"text":3615},{"id":3674,"depth":759,"text":3675,"children":4064},[4065,4067,4069,4070,4072],{"id":3678,"depth":766,"text":4066},"Проблема: find ничего не находит, хотя файл точно существует.",{"id":3739,"depth":766,"text":4068},"Проблема: find работает слишком медленно на больших дисках.",{"id":3802,"depth":766,"text":3803},{"id":3901,"depth":766,"text":4071},"Проблема: find выводит очень много результатов, нужно только количество.",{"id":3948,"depth":766,"text":3949},"2026-02-17 11:44:47","Пошаговая инструкция по поиску файлов в Linux с примерами. Учитесь использовать find, locate и fd для поиска по имени, размеру, дате и правам. Решение за 15 минут.","15-30 мин",[4077,4080,4083,4086],{"answer":4078,"question":4079},"`find` ищет файлы в реальном времени, сканируя файловую систему, что даёт актуальные результаты, но медленнее. `locate` использует предварительно построенную базу данных, поэтому работает мгновенно, но может не находить очень новые файлы до обновления базы (`updatedb`).","Чем команда find отличается от locate?",{"answer":4081,"question":4082},"Для поиска по содержимому используйте `grep -r 'текст' /путь/`. Команда `find` ищет только по метаданным (имя, размер, дата). Для сложного поиска по содержимому комбинируйте: `find . -name '*.log' -exec grep -l 'error' {} \\;`.","Как искать файлы по содержимому?",{"answer":4084,"question":4085},"Чаще всего причина в правах доступа. Запустите `find` с `sudo`, если ищете в системных каталогах (`/var`, `/usr`). Также проверьте, не опечатались ли в имени или пути, и что файловая система смонтирована.","Что делать, если find не находит файл, который точно есть?",{"answer":4087,"question":4088},"Да, для простого поиска по имени используйте `locate` (быстро) или современную утилиту `fd` (быстро, с удобным синтаксисом и цветным выводом). Установите `fd` через менеджер пакетов (`sudo apt install fd-find` в Debian/Ubuntu).","Есть ли более быстрая альтернатива find?",[4090,4093,4096,4099,4102,4105],{"name":4091,"text":4092},"Поиск по имени файла (точное совпадение)","Используйте `find /путь/ -name 'имя_файла'`. Замените `/путь/` на каталог для поиска (`.` для текущей папки, `/home` для домашних каталогов). Имя файла чувствительно к регистру.",{"name":4094,"text":4095},"Поиск по шаблону (подстрока или маска)","Примените `-name 'шаблон'` с подстановочными знаками: `*` для нескольких символов, `?` для одного. Пример: `find /var/log -name '*.log'` найдёт все файлы с расширением `.log`.",{"name":4097,"text":4098},"Поиск по размеру файла","Используйте опцию `-size`. Например, `find / -size +100M` найдёт файлы больше 100 МБ. Суффиксы: `c` (байты), `k` (КБ), `M` (МБ), `G` (ГБ). Знак `+` — больше, `-` — меньше.",{"name":4100,"text":4101},"Поиск по дате изменения","Опции `-mtime` (изменён), `-atime` (доступ), `-ctime` (метаданные). `find /tmp -mtime -1` найдёт файлы, изменённые за последние 24 часа. `-mtime +7` — старше 7 дней.",{"name":4103,"text":4104},"Поиск по правам доступа (правам)","Используйте `-perm`. `find / -perm -u=x` найдёт файлы, исполняемые владельцем. Для точного совпадения прав: `find . -perm 644`.",{"name":4106,"text":4107},"Использование locate для быстрого поиска","Просто выполните `locate имя_файла`. База данных обновляется раз в сутки автоматически. Для принудительного обновления: `sudo updatedb`.",[4109,4110,4111,4112,4113,4114,4115,4116,4117,4118],"найти файл в линукс","команда find примеры","поиск по размеру linux","как найти файл по имени в терминале","locate команда linux","fd утилита linux","поиск файлов с расширением .log","find по дате изменения","поиск больших файлов в linux","команда для поиска в линукс",{},[4121,4122,939],"/guides/linux/grep-search-content","/guides/linux/file-permissions-chmod","Гайды Linux",{"title":2097,"description":4074},"guides/linux/find-file","В этом гайде вы освоите основные и продвинутые техники поиска файлов в Linux с помощью утилит find, locate и fd. Мы рассмотрим поиск по имени, содержимому, размеру, дате изменения и правам доступа на практических примерах.",[937,4128,293,307,4129,2092,239],"cli","sysadmin","guide","9JDTwcviaG9agq1E1ooYR-AVyPoi1nPg9WS0YVDUXv0"]