Не найдено файлов удовлетворяющих критериям запроса
Не знаю названия и типа файла, знаю дату создания. Каким-либо образом через поиск или еще как можно найти список файлов, созданных в эту конкретную дату?
Открываешь папку и в строку поиска (справа сверху) пишешь: датасоздания:25.03.2015. Это если русская винда. Если английская, то "datecreated". Если всё правильно сделаешь - слово должно загореться синим.
Вначале делаю, потом думаю
Говорил я этому балбесу - купи валенки. А он что? .
Можно. В файловом броузере. Справа сверху окно поиска. Туда тыкни и будет что то типа выпадающего меню, там будет поиск по дате. Вводишь дату или интервал ищешшь
Тут могла быть ваша реклама :-)
А вообще подписи - зло
Открываешь папку и в строку поиска (справа сверху) пишешь: датасоздания:25.03.2015. Это если русская винда. Если английская, то "datecreated". Если всё правильно сделаешь - слово должно загореться синим.
Синим загорается и пишет - Объекты, удовлетворяющие критериям поиска, не найдены.
Ставлю сегодняшнюю дату - аналогично. Нихрена не ищет, хотя файлы новые есть.
А вот если не выбирать дату на календаре и просто оставить "датасоздания", то есть список файлов по датам. Только что-то их очень мало.
Синим загорается и пишет - Объекты, удовлетворяющие критериям поиска, не найдены.
Ставлю сегодняшнюю дату - аналогично. Нихрена не ищет, хотя файлы новые есть.
TC или FAR тогда
А еще хотел узнать через папку "библиотека" если отсортировать файлы по датам, вирусы будут видны или только безвредные файлы засветятся?
Синим загорается и пишет - Объекты, удовлетворяющие критериям поиска, не найдены.
Ставлю сегодняшнюю дату - аналогично. Нихрена не ищет, хотя файлы новые есть.
А вот если не выбирать дату на календаре и просто оставить "датасоздания", то есть список файлов по датам. Только что-то их очень мало.
Проверил у себя - всё норм, всё ищет. Если вообще ничего не находит (даже если сам создашь пустой файл и ищешь за текущий день) - что-то не так делаешь.
Вначале делаю, потом думаю
ну что там можно не так сделать. Открываю папку компьютер: в поиск ввожу датасоздания. Если больше ничего не писать, вылезает большой список файлов, отсортированный почему то по дате изменения, а не создания.
В общем чет я не догоняю этой системы.
Потому что винда по дефолту не ищет (и не сортирует) по дате создания, а только по дате изменения. Может ты имел ввиду дату изменения?
Если кратко, то когда я захожу в мастерскую steam и нажимаю "Ваши файлы" там ничего нет. Если нажму "Подписки" Там тож ничего нету.
Не найдено файлов удовлетворяющих критериям запроса
А, мне нужно от модов отписаться в разных играх, а у меня там нельзя выбрать игры, если ели как выберу игру, то моды на которые подписан не показываются, иногда конечно бывает, но показывает те которые я выбрал в непосредственно стиме, а не которые скачал при заходе на сервера.
Unturned
Попробуйте скачать любой VPN клиент, а затем проверить. Возможно ваш компьютер не проходит трассировку до сайта с модами
Началось это примерно месяц назад, когда я зашёл не на тот сервер и модификации скачались сами по себе.
Я решил отписаться от этих модов, но когда зашёл в библиотеку то ничего не увидел.
Исправлять сам не решился, мог ещё хуже сделать, в интернете вопрос не нашёл, в Тех. Поддержке не знают как решить))
А, так я менял язык и регион, не помогало.
Антивирус всегда отключен когда играю, больше никаких ПО которые бы мешали игре не присутствуют на ПК. Человек
@Cheburasha да уж, очень странная ситуация, хорошо что вы хотя бы довольно подробно описываете проблему, и идете на контакт. Скажите а вы пробовали заходить на ваш аккаунт через другой Стим клиент? К примеру на компьютере друга, или любого другого человека. Странно что тех поддержка не знает что с этим делать, не ужели они на столько запустили свой клиент, что уже сами не в силах решить возникшие баги. Arturik^Turik
@Cheburasha не получилось в плане у вас происходило тоже самое, или вы не могли зайти в аккаунт из-за проблем с подтверждением и так далее? Arturik^Turik
@Cheburasha это и очень плохо, значит у вас баг с аккаунтом, а я то думал в Стим клиенте. Тут мне кажется нужно настойчиво написать в техническую поддержку, и сказать что это проблемы не с вашей стороны, и пусть их решают именно они, потому что ситуация редкая, и если честно уже не знаю что вам советовать.ж Arturik^Turik
Странная проблема если честно сколько сижу в Стиме но у меня и у моих друзей я не слышал чтобы когда-то такое происходило, сможешь отредактировать вопрос и добавить скриншот? Чтобы было видно о чем именно идет речь а то что-то не понятно вообще что у тебя там за баг)
- GameSubject � 2017 Вопросы и ответы для геймеров
Игровое сообщество, помощь игрокам
Мы рады всем гостям которые любят провести свое время в онлайн или одиночных играх. У вас случилась беда, и вы не знаете как решить ту или иную ошибку? При заходе в любимую игрушку детства у вас появляется черный экран и вы уже не можете насладится теми ощущениями что испытывали раньше? Бывает такое что при попытке поиграть, любимая сага игры просто не запускается, тогда уже становится очень обидно. Не волнуйтесь, даже если вы думаете что это не поправимо, у нас вам помогут с этим справится.
Спецаильно для наших уважаемых посетителей, мы собираем лучшие советы и рекомендации которые помогут справится с той или иной проблемой. Как мы уже сказали раньше, даже если вы столкнулись с самыми редкими вылетами, даже если при запуске игры процесс находится в задачах но ничего не происходит, мы все равно найдем оптимальное решение которое подойдет каждому. Ах да, мы забыли упомянуть о самом главном, часто любители поиграть в 3D игры сталкиваются с такой ситуацией когда при попытке зайти в игровое приложение, у них просто происходит вылет или крэш на рабочий стол - с этим мы тоже знаем как боротся.
Вы думали что мы умеем только решать различные технические задачи? Нет это не правда, мы можем помочь каждому взрослому парню который решил найти или вспомнить название игры в которую он так любил поиграть в детстве, но забыл как она называется. Ведь наше игровое сообщество явлется прямой системой вопрос-ответ, вам нужно лишь обратится, и мы сразу же вам дадим ответ.
1. Поиск только по именам файлов работает некорректно, а именно – файл будет найден, только если выполняется одно из условий:
a) искомая последовательность символов является началом слова;
b) искомая последовательность символов расположена после некоторых символов типа дефиса, точки, подчеркивания и возможно других.
2. Поиск по именам файлов и содержимому файлов работает некорректно, а именно – файл с нужным нам содержимым будет найден, только если выполняются два условия:
a) тип файла включен в перечень типов, для которых операционная система выполняет текстовый поиск;
b) искомая последовательность символов либо является началом слова, либо расположена после некоторых символов типа дефиса, точки, подчеркивания и возможно других.
Кого это заинтересовало, могут ознакомиться с техническими подробностями моих опытов в изложенном ниже материале.
Небольшое примечание: так как для открытия описываемых мною окон элементов и настроек существует более чем один способ, я избрал как точку отсчета панель управления Windows. Ее можно открыть, нажав сочетание клавиш Win+X и выбрав в появившемся списке пункт «панель управления».
2. Описание системы поиска
Начну с того, что система поиска является компонентом операционной системы. Откроем настройку компонентов Windows: панель управления → программы и компоненты → включение или отключение компонентов Windows. Называется наш компонент – Windows Search. Если его отключить (убрать галочку из соответствующего квадратика), то после перезагрузки родной поиск Windows перестает работать, а из окна проводника исчезает поле для ввода поисковых запросов в правом верхнем углу окна.
По умолчанию компонент, естественно, включен. И при вводе первого же символа в поле поиска, система приступает к поиску, не дожидаясь ввода полного запроса. Это так называемый «живой» поиск, сейчас так модно. Вспомним, что в Windows XP для начала процесса поиска было необходимо дать команду – нажать кнопку «Найти».
Составляющей частью системы поиска, служащей для ускорения процесса поиска, является служба индексирования содержимого с аналогичным названием Windows Search, тип запуска – автоматический, отложенный. (На рисунке ниже данная служба отключена).
Для настройки служб открываем: панель управления → администрирование → службы. Свойства выделенной службы можно посмотреть, открыв контекстное меню – клик правой кнопкой мышки. Как я понимаю, данная служба индексирует определенное содержимое (названия, свойства, содержание файлов) в указанных ей расположениях и заносит эту информацию в свою базу данных. И в последующем поиск происходит уже по этой базе, которая хранится в «C:\ProgramData\Microsoft\Search», тем самым сокращается время поиска.
3. Настройки системы поиска
Настройки поиска сосредоточены аж в трех местах, видимо для удобства. При этом некоторые из них встречаются более чем в одном из этих трех мест, некоторые только в одном. Записываем минус на счет Microsoft. (Некоторые настройки остались для меня загадкой). Вот места расположения этих настроек:
3.1. Панель управления → параметры индексирования;
3.2. Панель управления → параметры папок (вкладка поиск);
3.3. Окно проводника Windows → активируем строку поиска (ставим в нее курсор) → в главном меню окна появляется вкладка «поиск», кликаем ее, если не раскрыта.
Пройдемся по этим местам и кратко рассмотрим параметры поиска.
3.1. Панель управления → параметры индексирования.
В параметрах индексирования нам предоставляется возможность указать, что и где будет индексироваться. Пока плюс в копилку Microsoft. Справка Microsoft не рекомендует выбирать много индексируемых мест, например папки Windows, Program Files, так как, по ее мнению, пользователям там искать нечего. Кроме того индексирование (перестройка индекса) процесс длительный.
Как видно из рисунка каждому типу файла сопоставляется нужный фильтр, а индексировать можно или только свойства файла или и свойства и содержимое. А это значит (о чудо!), что мы, например, можем набрать в строке поиска проводника имя нашего музыкального божества, и он будет найден по музыкальным тэгам. Правда не учитывается состояние/наличие тех самых музыкальных тэгов в наших любимых, часто безликих mp3-файлах. Ведь не редкость и имена типа track_01.mp3.
Кстати путь (расположение) файла – это еще и свойство файла, так что надо быть готовым увидеть в результатах поиска все файлы в пути которых есть слово, набранное в поисковом запросе. По мне, так это уже лишнее.
В итоге мы имеем замудреный поиск. А, как говорит, философия языка Python – простое лучше, чем сложное. Поэтому служба индексирования у меня остановлена.
3.2. Панель управления → параметры папок (вкладка поиск).
В параметрах папок сосредоточены наиболее важные, на мой взгляд, параметры поиска.
Параметры раздела «Как искать» применяются и к индексируемым и к неиндексируемым расположениям. Нужный и понятный всем параметр «Искать частичные совпадения» в комментариях не нуждается. Значение параметра «Не использовать индекс при поиске системных файлов в папках» для меня осталось загадкой. Ведь в параметрах индексирования уже указано, что и как индексировать.
Из названия следует, что параметры раздела «Поиск в неиндексированных расположениях» применяются только к неиндексированным местам.
Значения параметров понятны. В наличии возможность искать в архивах – еще плюс. Следующий важный параметр «Искать по именам файлов и содержимому». Что сказать? Порадовали, и честно предупредили – не все сразу и сейчас.
3.3. Окно проводника Windows → при активированной строке поиска в главном меню окна появляется вкладка «поиск».
Ну и третье место для настройки параметров поиска любое окно проводника Windows, стоит активировать поле поискового запроса и в главном меню окна появляется вкладка «поиск»:
Здесь много полезных фишек, в том числе только здесь и настраиваемых. Например, поиск только в текущей папке, либо и во всех вложенных тоже. Можно ограничить круг поиска по дате изменения файла, типу, размеру и другим свойствам. Ими я не пользуюсь, дабы потом не терзали сомнения. Фишка повторения поиска в интернетах (однако!), журнал поисковых запросов, а также дополнительные параметры (это как раз те, что мы уже обсудили выше).
4. Устранение неполадок и собственно баг
Начну с того, что в операционную систему встроены модули для поиска и устранения различных проблем. Думаю, фишка нужная, но сразу скажу – меня не спасла.
Итак открываем: панель управления → устранение неполадок → просмотр всех категорий → поиск и индексирование. Почему бы не показать сразу все категории? Не так уж их и много, на мой 14 дюймовый экран помещаются. Запускаем устранение неполадок поиска, в открывшемся окне кликаем «Дополнительно», кликаем «Запуск с правами администратора», кнопка «Далее». Опять новое окно с выбором проблемы, ставим галочку «Файлы не отображаются в результатах поиска» – дошли наконец до моего горя! Жмем «Далее» и получаем вот такой результат работы диагностики:
Как видим это касается службы индексирования (которая в тот момент была включена и работала). Разрешения для каталогов службы индексирования я не трогал, да и не знал о существовании этих каталогов, пока не увидел это окно с результатами диагностики. Напомню, где эти каталоги: «C:\ProgramData\Microsoft\Search».
Способ исправления этой ошибки я не нашел, и думаю уже незачем (служба индексирования у меня ведь отключена теперь). Да и по смыслу следует, что это касается только индексируемых расположений. А моя проблема актуальна для всех расположений.
Настало время детально разъяснить мою проблему. Сразу поясню, что состояние службы индексирования («работает» или «отключена») значения не имеет.
4.1. Поиск по имени файла.
Итак, в первой части эксперимента в глобальных параметрах поиска (относящихся к любым размещениям, индексированным и нет) активируем параметр «Искать частичные совпадения». Далее для неиндексированных расположений (в моем случае – для всех) снимаем галочку «Искать по именам файлов и содержимому», чтобы поиск выполнялся только по именам файлов. Приступаем к опытам. В исследуемой папке размещены несколько файлов различных типов:
Набираем в строке поиска fa и видим:
Казалось бы, Windows Search с задачей справился, даже результаты подсвечены желтым цветом. О чем еще мечтать? Но где же файл SearchFalse.vsd? Разве fa не часть имени SearchFalse.vsd? Может дело в регистре? Но в примере выше найдены имена, где f и в верхнем и в нижнем регистре. Для успокоения введем Fa и увидим, что результат не изменился. Хотя бы с регистром проблем не имеем!
Попробуем ввести cm, получим:
Как будто-бы все в норме.
Вводим ro:
«Нет элементов, удовлетворяющих условиям поиска» – как же так, братья и сестры? Три файла удовлетворяют условиям поиска (Error.cmd, Error_critical.txt, Wrong.txt), но они не найдены. Все пропало?
Вот что мы пока имеем: в поле поиска вводится последовательность символов, которая заведомо есть в названии файлов. Но в результатах поиска содержатся только файлы, у которых заданная последовательность является началом имени, или началом расширения, или расположена после дефиса.
Но это противоречит, уверен не только моему, представлению о принципе работы поиска!
Попробуем хитрость, введем первым символом запроса «звездочку» *ro:
Свершилось, файлы найдены! Но уже без чудной желтой подсветки. В справке про такие хитрости нет упоминаний. Развитие событий в целом настораживает.
4.2. Поиск по имени и содержимому файла.
Орешек знаний тверд, но мы не привыкли отступать… Включаем настройку «Искать по именам файлов и содержимому», чтобы теперь искать и по содержанию файла. В уже знакомой нам папке в пяти файлах (Error.cmd, Fail.xlsx, Foul.jpg, Mistake.bat, Wrong.txt) есть одинаковое содержимое:
Get off My Cloud
As Tears Go By
Paint_It_Black
Mother's Little Helper
Lady-Jane
Файл Foul.jpg – это текстовый файл с измененным расширением.
Набираем в поле поиска tea, (чтобы соответствовало началу слова Tears):
Вроде бы удача, только файл Foul.jpg не найден. Но это можно объяснить тем, что Windows понятно не считает его текстовым и текст там не ищет. Тут возникают вопросы: где поиск Windows берет информацию о типах файлов и второе, главное, – как заставить искать текст там, где мы этого хотим. Что касается первого – то, видимо, в реестре. А вот со вторым не ясно, где найти эту волшебную настройку? Ответа я опять не нашел. В качестве примечания отмечу, что в файлах .pdf текст найти можно.
Усложним задание, набираем в поле поиска bla, (чтобы символы шли после знака подчеркивания):
Файлы найдены, но говорить об удаче еще рано. Вводим jan, получаем тот же результат. Что ожидаемо.
Пробуем еще более усложнить задание, набираем запрос ear:
Те четыре файла, которые должны быть найдены, отсутствуют. Снова неудача, но к которой мы должны быть готовы. У нас есть ответный ход! Вводим *ear:
На этот раз неудача, неожидаемая, которая вызывает уже уныние. Неужели тут нужен другой волшебный символ, заменяющий начало слова? Мною опробованы: ~, @, $, %, -, !, даже пробел. Но все тщетно – файлы не найдены. Кстати если ввести впереди дефис, то результат поиска – все файлы кроме pe.pdf, опять загадка.
4.3. Выводы.
На основании всего изложенного выше можно сделать вывод, что механизм поиска одинаков и для поиска по именам файлов и для поиска по именам и содержимому. Ошибка, на мой взгляд, одна и весьма критическая, так как приводит к неполным результатам поиска. Кроме того вводит в заблуждение человека логичного в своем мышлении и вынуждает строить хитрые догадки.
Результат – жирный минус Microsoft. Радует только то, что баг лечится хотя бы для поиска по именам файлов.
5. Диагноз
Можно подвести неутешительные итоги:
1. Поиск только по именам файлов (с выключенным параметром «искать по именам файлов и содержимому») работает некорректно. А именно – файл будет найден, только если выполняется одно из условий:
a) искомая последовательность символов является началом слова;
b) искомая последовательность символов расположена после некоторых символов типа дефиса, точки, подчеркивания и возможно других, определять перечень которых считаю бесполезной тратой времени.
Этот баг лечится использованием в начале искомой последовательности спасительного символа * «звездочка».
2. Поиск по именам файлов и содержимому файлов (с включенным параметром «Искать по именам файлов и содержимому») работает некорректно. А именно – файл с нужным нам содержимым (нас интересует именно содержание файла) будет найден, только если выполняются два условия:
a) тип файла включен в перечень типов, для которых операционная система выполняет текстовый поиск;
b) искомая последовательность символов либо является началом слова, либо расположена после некоторых символов типа дефиса, точки, подчеркивания и возможно других, определять перечень которых считаю бесполезной тратой времени.
Лекарство от этого бага пока мною не найдено.
В указанном каталоге и его подкаталогах найти 3 самых больших файла, вывести их имена, размеры и даты создания
Помогите пожалуйста написать задание из лабораторной работы по ОС 2. В каталоге, указанном.
Поиск файла в каталоге и его подкаталогах
Как найти файл exe в каталоге и его подкаталогах После нахождения запустить его если нет файла.
Поиск файла в каталоге и его подкаталогах
Нашел на просторах интернета код, для поиска файла на СИ, под Linux, как можно преобразовать код.
В указанном каталоге и его подкаталогах найти наибольшего размера файл с указанным расширением
Помогите пожалуйста написать задание из лабораторной работы по ОС 1. В каталоге, указанном.
А что тут писать? У Вас все есть уже. Можно, конечно, с нынешними версиями гораздо проще сделать, но Вам это надо?
В коде выше присутствуют очепятки
Проверка наличия файла в заданном каталоге и его подкаталогах
Здравствуйте. Мне нужно проверить наличие файла с расширением .k но точное название каталога в.
Программа, которая составляет список файлов нулевой длины в текущем каталоге и во всех его подкаталогах
Написать программу, которая составляет список файлов нулевой длины в текущем каталоге и во всех его.
Поиск файла в указанном каталоге
имеется рабочий код на Visual C++ 2008, который выводит на экран список всех файлов с расширением.
Создать программу, которая ищет в указанном каталоге файлы, удовлетворяющие заданной маске
Создать программу, которая ищет в указанном каталоге файлы, удовлетворяющие заданной маске, и дата.
Библиография
Прекрасное описание работы утилиты find (и xargs, заодно), правда, в BSD-реализации, - в паре статей Dru Lavigne, размещенных в Софтерре в переводах Станислава Лапшанского: часть 1 и часть 2 .
Base Linux для пользователя. Команда find как файловый апофигей
В этой заметке речь пойдет о наборе исходников, известном в проекте GNU как findutils. И в первую голову - о команде find (как, впрочем, и о тесно связанной с ней команде xargs). Столь высокая честь выпадает им потому, что посредством этих двух команд можно решить если не все, то большинство (Buono Parte) проблем, возникающих при работе с файлами.
Кроме find и xargs, в состав набора findutils входят также команды locate и updatedb, о которых говорилось ранее, а также команды bigram, code, frcode, реального приложения которых я, честно говоря, не знаю (и, соответственно, говорить о них не буду).
Итак, файловый апофигей - команда find. Строго говоря, вопреки своему имени, команда эта выполняет не поиск файлов как таковой, но - рекурсивный обход дерева каталогов, начиная с заданного в качестве аргумента, отбирает из них файлы в соответствие с некоторыми критериями и выполняет над отбракованным файловым хозяйством некоторые действия. Именно эту ее особенность подчеркивает резюме команды find, получаемое (в некоторых системах) посредством
что применительно случаю можно перевести как "прогулка по файловой системе".
Команда find по своему синтаксису существенно отличается от большинства прочих Unix-команд. В обобщенном виде формат ее можно представить следующим образом:
Аргумент - это путь поиска, то есть каталог, начиная с которого следует искать файлы, например, корневой
или домашний каталог пользователя
Опция поиска - критерий, по которому следует искать файл (файлы). В качестве таковых могут выступать имя файла (-name), его тип (-type), атрибуты принадлежности, доступа или времени.
Ну а опция действия определяет, что же надлежит сделать с найденным файлом или файлами. А сделать с ними, надо заметить, можно немало - начиная с вывода на экран (-print) и кончая передаче в качестве аргументов любой другой команде (-exec).
Как можно заметить, опция поиска и опция действия предваряются знаком дефиса, значение первой отделяется от ее имени пробелом.
Однако начнем по порядку. Опции поиска команды find позволяют выполнить вышеозначенный поиск по следующим критериям (символ дефиса перед опциями ниже опущен, но не следует забывать его ставить):
- name - поиск по имени файла или по маске имени; в последнем случае метасимволы маски должны обязательно экранироваться (например, - name *.tar.gz) или заключаться в кавычки (одинарные или двойные, в зависимости от правил, принятых для данной командной оболочки; этот критерий чувствителен к регистру, но близкий по смыслу критерий iname позволяет производить поиск по имени без различения строчных и заглавных букв;
- type - поиск по типу файла; этот критерий принимает следующие значения - f (регулярный файл), d (каталог), s (символическая связь), b (файл блочного устройства), c (файл символьного устройства);
- user и group - поиск по имени или идентификатору владельца или группы, выступающим в качестве значения критерия; существует также критерии nouser и nogroup - они отыскивают файлы, владельцев не имеющие (то есть тех, учетные записи для которых отсутствую в файлах /etc/passwd и /etc/group); эти критерии в значения, разумеется, не нуждаются;
- size - поиск по размеру, задаваемому в виде числа в блоках или в байтах - в виде числа с последующим символом c; возможны значения n (равно n блоков), +n (более n блоков), -n (менее n блоков);
- perm - поиск файлов по значениям их атрибутов доступа, задаваемых в символьной форме;
- atime, ctime, mtime - поиск файлов с указанными временными атрибутами; значения временных атрибутов указываются в сутках (точнее, в периодах, кратных 24 часам); возможны формы значений этих атрибутов: n (равно указанному значению n*24 часа), +n (ранее n*24 часа), -n (позднее n*24 часа);
- newer - поиск файлов, созданных после файла, указанного в качестве значения критерия (то есть имеющего меньшее значение mtime);
- maxdepth и mindepth позволяют конкретизировать глубину поиска во вложенных подкаталогах - меньшую или равную численному значению для первого критерия и большую или равную - для второго;
- depth - производит отбор в обратном порядке, то есть не от каталога, указанного в качестве аргумента, а с наиболее глубоко вложенных подкаталогов; смысл этого действия - получить доступ к файлам в каталоге, для которого пользователь не имеет права чтения и исполнения;
- prune - позволяет указать подкаталоги внутри пути поиска, в которых отбора файлов производить не следует.
Кроме этого, существует еще одна опция поиска - fstype, предписывающая выполнять поиск только в файловой системе указанного типа; очевидно, что она может сочетаться с любыми другими опциями поиска. Например, команда
будет искать файлы, имеющие отношение к оболочке Z-Shell, начиная с корня, но только - в пределах тех разделов, на которых размещена файловая система Ext3fs (на моей машине - это именно чистый корень, за вычетом каталогов /usr, /opt, /var, /tmp и, конечно же, /home.
Критерии отбора файлов могут группироваться практически любым образом. Так, в форме
она выберет в домашнем каталоге пользователя все компрессированные архивы, созданные после файла с именем filename. По умолчанию между критериями отбора предполагается наличие логического оператора "И". То есть будут искаться файлы, удовлетворяющие и маске имени, и соответствующему атрибуту времени. Если требуется использование оператора "ИЛИ", он должен быть явно определен в виде дополнительной опции -o между опциями поиска. Так, команда:
призвана отобрать файлы, созданные менее двух суток назад, или же - позднее, чем файл filename.
Особенность GNU-реализации команды find (как, впрочем, и ее тезки из числа BSD-утилит) - то, что она по умолчанию выводит список отобранных в соответствии с заданными критериями файлов на экран, не требуя дополнительных опций действия. Однако, как говорят, в других Unix-системах (помнится, даже и в некоторых реализациях Linux) указание какой-либо из таких опций - обязательно. Так что рассмотрим их по порядку.
Для выведения списка отобранных файлов на экран в общем случае предназначена опция -print. Вывод этот имеет примерно следующий вид:
Сходный смысл имеет и опция -ls, однако она выводит более полные сведения о найденных файлах, аналогично команде ls с опциями -dgils:
Идем далее. Опция -delete уничтожит все файлы, отобранные по указанным критериям. Так, командой
будут автоматически стерты все файлы, к которым не было обращения за последние 100 дней (из молчаливого предположения, что раз к ним три месяца не обращались - значит, они и вообще не нужны). Истреблению подвергнутся файлы в подкаталогах любого уровня вложенности - но не включающие их подкаталоги (если, конечно, последние сами не подпадают под критерии отбора).
И, наконец, опция -exec - именно ею обусловлено величие утилиты find. В качестве значения ее можно указать любую команду с необходимыми опциями - и она будет выполнена над отобранными файлами, которые будут рассматриваться в качестве ее аргументов. Проиллюстрируем это на примере.
Использовать опцию -delete, как мы это только что сделали - не самое здоровое решение, ибо файлы при этом удаляются без запроса, и можно случайно удалить что-нибудь нужное. И потому достигнем той же цели следующим образом:
В этом случае на удаление каждого отобранного файла будет запрашиваться подтверждение.
Обращаю внимание на последовательность символов <> ; (с пробелом между закрывающей фигурной скобкой и обратным слэшем) в конце строки. Пара фигурных скобок <> символизирует, что свои аргументы исполняемая команда (в примере - rm) получает от результатов отбора команды find, точка с запятой означает завершение строки (без нее на нажатие Enter последовало бы вторичное приглашение командной строки), а обратный слэш экранирует ее специальное значение.
Кроме опции действия -exec, у команды find есть еще одна, близкая по смыслу, опция - -ok. Она также вызывает некую произвольную команду, которой в качестве аргументов передаются имена файлов, отобранные по критериям, заданным опцией (опциями) поиска. Однако перед выполнением каждой операции над каждым файлом запрашивается подтверждение.
Приведенный пример, хотя и вполне жизненный, достаточно элементарен. Рассмотрим более сложный случай - собирание в один каталог всех скриншотов в формате PNG, разбросанных по древу домашнего каталога:
В результате все png-файлы будут изысканы и скопированы (или - перемещены, если воспользоваться командой mv вместо cp) в одно место.
А теперь - вариант решения задачи, которая казалась мне сначала трудно разрешимой: рекурсивное присвоение необходимых атрибутов доступа в разветвленном дереве каталогов - различных для регулярных файлов и каталогов.
Зачем и отчего это нужно? Поясню на примере. Как-то раз, обзаведясь огромным (40 Гбайт) винчестером, я решил собрать на него все нужные мне данные, рассеянные по дискам CD-R/RW (суммарным объемом с полкубометра) и нескольким сменным винчестерам, одни из которых были отформатированы в FAT16, другие - в FAT32, третьи - вообще в ext2fs (к слову сказать, рабочей моей системой в тот момент была FreeBSD). Сгрузив все это богачество в один каталог на новом диске, я создал в нем весьма неприглядную картину.
Ну, во-первых, все файлы, скопированные с CD и FAT-дисков, получили биты исполняемости, хотя все это были файлы данных. Казалось бы, мелочь, но иногда очень мешающая; в некоторых системах это не позволяет, например, просмотреть html-файл в Midnight Commander простым нажатием Enter. Во-вторых, для некоторых каталогов, напротив, исполнение не было предусмотрено ни для кого - то есть я же сам перейти в них не мог. В третьих, каталоги (и файлы) с CD часто не имели атрибута изменения - а они нужны мне были для работы (в т.ч. и редактирования). Кончено, от всех этих артефактов можно было бы избавиться, предусмотрев должные опции монтирования накопителей (каждого накопителя - а их число, повторяю, измерялось уже объемом занимаемого пространства), да я об этом и не подумал - что выросло, то выросло. Так что ситуация явно требовала исправления, однако проделать вручную такую работу над данными более чем в 20 Гбайт видилось немыслимым.
Да так оно, собственно, и было бы, если б не опция -exec утилиты find. Каковая позволила изменить права доступа требуемым образом. Итак, сначала отбираем все регулярные файлы и снимаем с них бит исполнения для всех, заодно присваивая атрибут изменения для себя, любимого:
Далее - поиск каталогов и обратная процедура над итоговой выборкой:
И дело - в шляпе, все права доступа стали единообразными (и теми, что мне нужны). Именно после этого случая я, подобно митьковскому Максиму, проникся величием философии марксизма (пардон, утилиты find). А ведь это еще не предел ее возможностей - последний устанавливается только встающими задачами и собственной фантазией.
Так, с помощью команды find легко наладить периодическое архивирование результатов текущей работы. Для этого перво-наперво создаем командой tar полный архив результатов своей жизнедеятельности:
А затем в меру своей испорченности (или, напротив, аккуратности), время от времени запускаем команду
Еще один практически полезный вариант использования команды find в мирных целях - периодическое добавление отдельно написанных фрагментов к итоговому труду жизни (например, мемуарам эникейщика). Впрочем, чтобы сделать это, необходимо сначала ознакомиться с командами обработки файлов, к которым мы вскоре обратимся.
А пока - об ограничении возможностей столь замечательной сцепки команды find с опцией действия -exec (распространяющиеся и на опцию -ok). Оно достаточно очевидно: вызываемая любой из этих опций команда выполняется в рамках самостоятельного процесса, что на слабых машинах, как говорят, приводит к падению производительности (должен заметить, что на машинах современных заметить этого практически невозможно).
В источниках мне встречалось указание на еще одно ограничение связки find с опцией -exec - ограничение на длину командной строки. Однако на практике с таким ограничением мне столкнуться не приходилось (даже в искусственно созданных ситуациях, типа поиска по шаблону s* и тому подобным). И в документации никаких сведений по сему поводу я не нашел.
Тем не менее, если какая-либо из этих проблем возникнет - она вполне преодолима. И сделать это призвана команда xargs. Она определяется как построитель и исполнитель командной строки со стандартного ввода. А поскольку на стандартный ввод может быть направлен вывод команды find - xargs воспримет результаты ее работы как аргументы какой-либо команды, которую в свою очередь, можно рассматривать как аргумент ее самое (по умолчанию такой командой-аргументом является /bin/echo).
Повторюсь - в реальности не вижу необходимости (для себя лично) в команде xargs и потому не занимался ее изучением. Так что заинтересованных отсылаю к соответствующей man-странице (и - библиографии в следующем абзаце).
Читайте также: