Примеры использования find
Поиск файла по имени
find / -name “file.txt”
* в данном примере будет выполнен поиск файла с именем file.txt по всей файловой системе, начинающейся с корня .
Поиск файла по части имени:
* данной командой будет выполнен поиск всех папок или файлов в корневой директории /, заканчивающихся на .tmp
Найти все файлы или папки, которые начинаются на sess_ и заканчиваются на cd
find . -name “sess_*” -a -name “*cd”
* -a: логическое И, -o: логическое ИЛИ.
Поиск по дате
1. Поиск файлов, которые менялись определенное количество дней назад:
find . -type f -mtime +60
* данная команда найдет файлы, которые менялись более 60 дней назад.
2. Поиск файлов с помощью newer. Данная опция доступна с версии 4.3.3 (посмотреть можно командой find –version).
а) дате изменения:
find . -type f -newermt “2019-11-02 00:00”
* покажет все файлы, которые менялись, начиная с 02.11.2019 00:00.
find . -type f -newermt 2019-10-31 ! -newermt 2019-11-02
* найдет все файлы, которые менялись в промежутке между 31.10.2019 и 01.11.2019 (включительно).
б) дате обращения:
find . -type f -newerat 2019-10-08
* все файлы, к которым обращались с 08.10.2019.
find . -type f -newerat 2019-10-01 ! -newerat 2019-11-01
* все файлы, к которым обращались в октябре.
в) дате создания:
find . -type f -newerct 2019-09-07
* все файлы, созданные с 07 сентября 2019 года.
find . -type f -newerct 2019-09-07 ! -newerct “2019-09-09 07:50:00”
* файлы, созданные с 07.09.2019 00:00:00 по 09.09.2019 07:50
Искать в текущей директории и всех ее подпапках только файлы:
* f — искать только файлы.
Поиск по правам доступа
Ищем все справами на чтение и запись:
find / -perm 0666
Находим файлы, доступ к которым имеет только владелец:
find / -perm 0600
Поиск файла по содержимому
find / -type f -exec grep -i -H “content” ;
* в данном примере выполнен рекурсивный поиск всех файлов в директории и выведен список тех, в которых содержиться строка content.
С сортировкой по дате модификации
find /data -type f -printf ‘%TY-%Tm-%Td %TT %pn’ | sort -r
* команда найдет все файлы в каталоге /data, добавит к имени дату модификации и отсортирует данные по имени. В итоге получам, что файлы будут идти в порядке их изменения.
Лимит на количество выводимых результатов
Самый распространенный пример — вывести один файл, который последний раз был модифицирован. Берем пример с сортировкой и добавляем следующее:
find /data -type f -printf ‘%TY-%Tm-%Td %TT %pn’ | sort -r | head -n 1
Поиск с действием (exec)
Найти только файлы, которые начинаются на sess_ и удалить их:
find . -name “sess_*” -type f -print -exec rm ;
* -print использовать не обязательно, но он покажет все, что будет удаляться, поэтому данную опцию удобно использовать, когда команда выполняется вручную.
Переименовать найденные файлы:
find . -name “sess_*” -type f -exec mv new_name ;
find . -name “sess_*” -type f | xargs -I ‘‘ mv new_name
Вывести на экран количество найденных файлов и папок, которые заканчиваются на .tmp:
find . -name “*.tmp” | wc -l
find /home/user/* -type d -exec chmod 2700 ;
* в данном примере мы ищем все каталоги (type d) в директории /home/user и ставим для них права 2700.
Сделать новые строки после слов, начинающиеся с больших букв.
Искать слова с больших букв мы уже умеем, осталось разобраться с заменой.
Нам здесь понадобится возможность заменять изначальный текст на как-либо измененный.
Итак, заменяем <*> (здесь мы ищем слова, начинающиеся с больших букв)
на \&^13.
В данном случае выражение \& означает «искомый текст» — то выражение, которое
вы нашли. А ^13 — это просто знак новой строки.
Но есть еще один способ сделать эту замену, опишем его сейчас, поскольку более
сложные варианты этого метода нам потребуются ниже.
Замените (<*>) на \1^13. Результат будет тот же самый.
Поясню, как это работает. Выражение в поиске может содержать несколько наборов круглых скобок,
в данном случае один. Сами круглые скобки никак не влияют на поиск, ищет Word то же выражение,
как если бы этих скобок не было. А вот все, что находится в скобках, нумеруется.
В данном случае у нас есть только одно выражение в скобках, и оно совпадает с искомым текстом.
Поэтому оно нумеруется при помощи последовательности \1.
Простой пример использования команды find
Для начала рассмотрим простой пример использования команды find для поиска на компьютере файлов с именем config. Мы будем искать файлы config, начиная с корневого каталога . Для этого вам нужно выполнять команду от имени пользователя root, чтобы иметь достаточно прав доступа, иначе получите сообщения «Permission denied». Итак, выполним команду:
Команда означает следующее: искать файлы с именем config (-name config), начиная с каталога (первый параметр команды find) и выводить имена файлов на экран (аргумент -print). Отмечу, что поиск рекурсивный, то есть при поиске просматриваются все вложенные директории. Как видите все просто. Теперь рассмотрим синтаксис команды и перейдем к обзору ее основных аргументов.
Общий синтаксис
find <где искать> <опции>
<где искать> — путь к корневому каталогу, откуда начинать поиск. Например, find /home/user — искать в соответствующем каталоге. Для текущего каталога нужно использовать точку «.».
<опции> — набор правил, по которым выполнять поиск.
* по умолчанию, поиск рекурсивный. Для поиска в конкретном каталоге можно использовать опцию maxdepth.
Описание опций
Опция | Описание |
---|---|
-name | Поиск по имени. |
-iname | Регистронезависимый поиск по имени. |
-type |
Тип объекта поиска. Возможные варианты:
|
-size | Размер объекта. Задается в блоках по 512 байт или просто в байтах (с символом «c»). |
-mtime | Время изменения файла. Указывается в днях. |
-mmin | Время изменения в минутах. |
-atime | Время последнего обращения к объекту в днях. |
-amin | Время последнего обращения в минутах. |
-ctime | Последнее изменение владельца или прав на объект в днях. |
-cmin | Последнее изменение владельца или прав в минутах. |
-user | Поиск по владельцу. |
-group | По группе. |
-perm | С определенными правами доступа. |
-depth | Поиск должен начаться не с корня, а с самого глубоко вложенного каталога. |
-maxdepth | Максимальная глубина поиска по каталогам. -maxdepth 0 — поиск только в текущем каталоге. По умолчанию, поиск рекурсивный. |
-prune | Исключение перечисленных каталогов. |
-mount | Не переходить в другие файловые системы. |
-regex | По имени с регулярным выражением. |
-regextype <тип> | Тип регулярного выражения. |
-L или -follow | Показывает содержимое символьных ссылок (симлинк). |
-empty | Искать пустые каталоги. |
-delete | Удалить найденное. |
-ls | Вывод как ls -dgils |
Показать найденное. | |
-print0 | Путь к найденным объектам. |
-exec <команда> {} \; | Выполнить команду над найденным. |
-ok | Выдать запрос перед выполнением -exec. |
Также доступны логические операторы:
Оператор | Описание |
---|---|
-a | Логическое И. Объединяем несколько критериев поиска. |
-o | Логическое ИЛИ. Позволяем команде find выполнить поиск на основе одного из критериев поиска. |
-not или ! | Логическое НЕ. Инвертирует критерий поиска. |
Полный набор актуальных опций можно получить командой man find.
§ 54. Кавычки при цитатах
§ 54.1
Цитаты заключаются в кавычки. Если цитата оформляется как прямая речь, т. е. сопровождается словами автора, приводящего ее, то применяются соответствующие правила пунктуации (см. § 47 — 50):
Белинский писал: «Создаёт человека природа, но развивает и образует его общество»;
«Двенадцать миллионов людей вне закона!.. Ужас!» — писал в своём дневнике А. И. Герцен, имея в виду крепостных крестьян в тогдашней России;
«Первоэлементом литературы, — указывал М. Горький, — является язык, основное орудие её и — вместе с фактами, явлениями жизни — материал литературы»;
Докладчик привёл слова М. В. Ломоносова: «России могущество будет прирастать Сибирью» — и этим закончил своё выступление.
§ 54.2
Если после стихотворной цитаты текст продолжается, то тире ставится в конце стихотворной строки: Муж Татьяны, так прекрасно и так полно с головы до ног охарактеризованный поэтом этими двумя стихами:
…И всех выше
И нос и плечи поднимал
Вошедший с нею генерал, —
муж Татьяны представляет ей Онегина, как своего родственника и друга (Бел.) — слова муж Татьяны повторяются для того, чтобы связать вторую часть авторских слов с первой частью (ср. § 40, п. 2).
§ 54.3
Если цитата состоит из нескольких абзацев, то кавычки ставят только в начале и в конце всего текста:
В статье «Из истории русской литературы» М. Горький писал:
«Чем же сильна литература?
Насыщая идеи плотью и кровью, она даёт им большую наглядность, большую убедительность, чем философия или наука».
Нередко при этом для более четкого обозначения границ цитаты, особенно если внутри нее тоже имеются кавычки, используется в качестве дополнительного особый полиграфический способ выделения цитаты (набор на меньший формат, набор иным шрифтом и т. д.).
§ 54.4
Если, приводя цитату, автор или редактор (издатель) подчеркивает в ней отдельные слова (такие места выделяются особым шрифтом), то это оговаривается в примечании, заключаемом в скобки, с указанием инициалов автора или сокращения Ред., перед которыми ставятся точка и тире: (подчёркнуто нами. — А.Б.), (курсив наш. — А.Б.), (разрядка наша. — Ред. ). Такое примечание помещается или непосредственно после соответствующего места в цитате, или в конце предложения либо цитаты в целом, или в виде сноски (в последнем случае примечание дается без скобок).
§ 54.5
Если автор или редактор вставляет в цитату свой текст, поясняющий предложение либо отдельные слова цитаты, то этот текст помещают в прямых или угловых скобках; инициалы автора, а также слово Ред. в этом случае не ставят:Н. С. Щукин вспоминал об А. П. Чехове: «Чтобы стать настоящим писателем, — учил он <А.П. Чехов>, — надо посвятить себя исключительно этому делу».
Примеры использования
А теперь давайте рассмотрим примеры find, чтобы вы лучше поняли, как использовать эту утилиту.
1. Поиск всех файлов
Показать все файлы в текущей директории:
Все три команды покажут одинаковый результат. Точка здесь означает текущую папку. В место неё можно указать любую другую.
2. Поиск файлов в определенной папке
Показать все файлы в указанной директории:
Искать файлы по имени в текущей папке:
Поиск по имени в текущей папке:
Не учитывать регистр при поиске по имени:
5. Несколько критериев
Поиск командой find в Linux по нескольким критериям, с оператором исключения:
Найдет все файлы, начинающиеся на test, но без расширения php. А теперь рассмотрим оператор ИЛИ:
Эта команда найдёт как php, так и html файлы.
6. Тип файла
По умолчанию find ищет как каталоги, так и файлы. Если вам необходимо найти только каталоги используйте критерий type с параметром d. Например:
Для поиска только файлов необходимо использовать параметр f:
Найти скрытые файлы только в текущей папке. Имена скрытых файлов в Linux начинаются с точки:
8. Поиск по разрешениям
Найти файлы с определенной маской прав, например, 0664:
Права также можно задавать буквами для u (user) g (group) и o (other). Например, для того чтобы найти все файлы с установленным флагом Suid в каталоге /usr выполните:
Поиск файлов доступных владельцу только для чтения только в каталоге /etc:
Найти только исполняемые файлы:
Найти все файлы, принадлежащие пользователю:
Поиск файлов в Linux принадлежащих группе:
10. Поиск по дате модификации
Поиск файлов по дате в Linux осуществляется с помощью параметра mtime. Найти все файлы модифицированные 50 дней назад:
Поиск файлов в Linux открытых N дней назад:
Найти все файлы, модифицированные между 50 и 100 дней назад:
Найти файлы измененные в течении часа:
Найти все файлы размером 50 мегабайт:
От пятидесяти до ста мегабайт:
Найти самые маленькие файлы:
Самые большие:
13. Действия с найденными файлами
Для выполнения произвольных команд для найденных файлов используется опция -exec. Например, для того чтобы найти все пустые папки и файлы, а затем выполнить ls для получения подробной информации о каждом файле используйте:
Удалить все текстовые файлы в tmp
Удалить все файлы больше 100 мегабайт:
Поиск больших файлов и директорий командой du
Команда du используется для вывода размеров файлов и директорий в Linux. Ее можно использовать для поиска больших файлов и директорий. Для этого выполняется команда du и результат сортируется по размеру. Таким образом можно увидеть, кто занимает больше всего места на диске.
Найдем пять самых больших файлов и директорий:
- Символ . указывает путь и означает текущую директорию. Для поиска в другой директории укажите вместо точки ее путь.
- Опции -ahx означают: a — искать и файлы и директории; h — выводить информацию в удобно-читаемом формате; x — не выполнять поиск на других файловых системах.
- sort -rh выполняет сортировку результата.
- head −5 выводит только пять первых результатов.
8.5. Многоточие как знак пропуска текста в цитате
8.5.1. Замена многоточием других знаков препинания
Многоточие заменяет такие знаки препинания перед опускаемым текстом в цитате, как запятая, двоеточие, точка с запятой, тире. Недопустимо заменять одну из точек многоточия каким-либо из этих знаков или сочетать многоточие с любым из них. Напр.:
В источнике: | Правильно в цитате: |
---|---|
А поэзия, прости господи, должна бытьглуповата. | «А поэзия… должна быть глуповата», —писал Пушкин. |
Неправильно в цитате: | |
«А поэзия…, должна быть…»;«А поэзия.., должна быть…»;«А поэзия,., должна быть…» |
8.5.2. Сочетание многоточия с другими знаками препинания
Многоточие может сочетаться с такими знаками препинания, как точка, точка с запятой, восклицательный и вопросительный знаки, многоточие, в следующих случаях:
1. Точку с запятой ставят после многоточия, когда в тексте приводится перечень цитат, выделенных не кавычками, а каким-либо шрифтовым или нешрифтовым способом, с опущенными в конце каждой словами или с опущенными начальными словами (сочетаются многоточие цитат и точка с запятой авт. текста, в который цитаты включены). Напр.:
Не обособляются определения при личном местоимении, если определение по смыслу связано не только с подлежащим, но и со сказуемым, например: Он выходит из задних комнат уже окончательно расстроенный…; Я прихожу к вечеру усталый, голодный.Граф Илья Андреевич… в конце января с Наташей и Соней приехал в Москву, …Пришел Разметнов с Демкой Ушаковым.
2. Точку, восклицательный или вопросительный знак, многоточие ставят перед многоточием с отбивкой от него, когда одно предложение цитаты приводится полностью (оно и заканчивается одним из перечисленных в начале пункта знаков), а начальные слова следующего предложения цитаты опущены. Это позволяет читателю получить точное представление о структуре цитируемого текста. Напр.:
В источнике: | В цитате: |
---|---|
Мы вышли из сакли. Вопреки предсказанию моего спутника, погода прояснилась… |
«Мы вышли из сакли. …Погода прояснилась…» «Мы вышли… …Погода прояснилась…» |
8.5.3. Многоточие в начале и в конце абзацев многоабзацной цитаты
Если в конце абзаца многоабзацной цитаты опущены слова, такой абзац заканчивается многоточием, а если при этом в начале следующего абзаца опущены слова (первое слово), то он начинается многоточием. Структура текста цитаты не меняется: она делится на абзацы так же, как в источнике. Напр.:
Первый абзац цитаты с опущенными в конце словами…
…Второй абзац цитаты с опущенным начальным словом или начальными словами.
8.5.4. Многоточие в угловых скобках
Такое многоточие, заменяющее текст из одного или нескольких предложений, опущенный при цитировании:
1. Сочетается с точкой, если предшествующее предложение цитаты приводится целиком, и с многоточием, если в конце предшествующего предложения цитаты или начале последующего предложения опущены слова. Напр.:
Полное предложение цитаты. <…> Полное предложение цитаты.
Предложение цитаты с опущенными в конце словами (последним словом)… <…> …Предложение цитаты с опущенными начальными словами (первым словом).
2. Выделяется в самостоятельный абзац, если им заменяется абзац между абзацами цитируемого текста. Напр.:
Первый абзац цитируемого текста.
<…>
Третий абзац цитируемого текста.
3. Ставится в начале и (или) конце абзаца цитируемого текста, если опущены предложения в начале и (или) конце этого абзаца. Напр.:
Первый абзац цитируемого текста.
<…> Второй абзац цитируемого текста с опущенным начальным и конечным предложением. <…>
Третий абзац цитируемого текста.
8.5.5. Слитное и раздельное написание многоточия с текстом
Оно подчиняется следующим правилам:
1. Многоточие в начале фразы пишется слитно с последующим словом. Напр.:
Мы вышли из сакли. …Погода прояснилась…
2. Многоточие в середине и конце фразы пишется слитно с предшествующим словом. Напр.:
Мы вышли… Вопреки предсказанию моего спутника, погода прояснилась…
В обоих случаях (п. 1 и 2), если в машинописном оригинале многоточие напечатано с пробелом перед текстом или после него, следует пометить его корректурным знаком «уничтожить пробел».
3. Многоточие в угловых скобках рекомендуется набирать с отбивкой от предшествующего и последующего текста. Напр.:
Цитата. <…> Цитата… <…> Цитата.
§ 55. Многоточие при цитатах
§ 55.1
Если цитата приводится не полностью, то пропуск обозначается многоточием, которое ставится:
1) перед цитатой (после открывающих кавычек), синтаксически не связанной с авторским текстом, для указания, что цитата приводится не с начала предложения: Л. Н. Толстой писал: «…в искусстве простота, краткость и ясность есть высшее совершенство формы искусства»;
2) в середине цитаты, когда пропущена часть текста внутри нее: Говоря о достоинствах языка народной поэзии, А. А. Фадеев напомнил: «Не случайно наши русские классики… рекомендовали читать сказки, прислушиваться к народной речи, изучать пословицы, читать писателей, которые обладают всем богатством русской речи»;
3) после цитаты (перед закрывающими кавычками), когда цитируемое предложение приводится не до конца: Выступая в защиту культуры устной речи, А. П. Чехов писал: «В сущности ведь для интеллигентного человека дурно говорить должно бы считаться таким же неприличием, как не уметь читать и писать…»
§ 55.2
После цитаты, заканчивающейся многоточием, ставится точка, если цитата не является самостоятельным предложением: М. В. Ломоносов писал, что «красота, великолепие, сила и богатство российского языка явствует довольно из книг, в прошлые века писанных…».
Если же цитата, заканчивающаяся многоточием, является самостоятельным предложением, то после кавычек точка не ставится (как при прямой речи; см. § 47, п. 5): В. Г. Белинский писал: «В „Онегине“ все части органически сочленены…»
Примеры использования find
Поиск файла по имени
1. Простой поиск по имени:
find / -name «file.txt»
* в данном примере будет выполнен поиск файла с именем file.txt по всей файловой системе, начинающейся с корня .
2. Поиск файла по части имени:
find / -name «*.tmp»
* данной командой будет выполнен поиск всех папок или файлов в корневой директории /, заканчивающихся на .tmp
3. Несколько условий.
а) Логическое И. Например, файлы, которые начинаются на sess_ и заканчиваются на cd:
find . -name «sess_*» -a -name «*cd»
б) Логическое ИЛИ. Например, файлы, которые начинаются на sess_ или заканчиваются на cd:
find . -name «sess_*» -o -name «*cd»
в) Более компактный вид имеют регулярные выражения, например:
find . -regex ‘.*/\(sess_.*cd\)’
find . -regex ‘.*/\(sess_.*\|.*cd\)’
* где в первом поиске применяется выражение, аналогичное примеру а), а во втором — б).
4. Найти все файлы, кроме .log:
find . ! -name «*.log»
* в данном примере мы воспользовались логическим оператором !.
Поиск по дате
1. Поиск файлов, которые менялись определенное количество дней назад:
find . -type f -mtime +60
* данная команда найдет файлы, которые менялись более 60 дней назад.
2. Поиск файлов с помощью newer. Данная опция доступна с версии 4.3.3 (посмотреть можно командой find —version).
а) дате изменения:
find . -type f -newermt «2019-11-02 00:00»
* покажет все файлы, которые менялись, начиная с 02.11.2019 00:00.
find . -type f -newermt 2019-10-31 ! -newermt 2019-11-02
* найдет все файлы, которые менялись в промежутке между 31.10.2019 и 01.11.2019 (включительно).
б) дате обращения:
find . -type f -newerat 2019-10-08
* все файлы, к которым обращались с 08.10.2019.
find . -type f -newerat 2019-10-01 ! -newerat 2019-11-01
* все файлы, к которым обращались в октябре.
в) дате создания:
find . -type f -newerct 2019-09-07
* все файлы, созданные с 07 сентября 2019 года.
find . -type f -newerct 2019-09-07 ! -newerct «2019-09-09 07:50:00»
* файлы, созданные с 07.09.2019 00:00:00 по 09.09.2019 07:50
Искать в текущей директории и всех ее подпапках только файлы:
find . -type f
* f — искать только файлы.
Поиск по правам доступа
1. Ищем все справами на чтение и запись:
find / -perm 0666
2. Находим файлы, доступ к которым имеет только владелец:
find / -perm 0600
Поиск файла по содержимому
find / -type f -exec grep -i -H «content» {} \;
* в данном примере выполнен рекурсивный поиск всех файлов в директории и выведен список тех, в которых содержится строка content.
С сортировкой по дате модификации
find /data -type f -printf ‘%TY-%Tm-%Td %TT %p\n’ | sort -r
* команда найдет все файлы в каталоге /data, добавит к имени дату модификации и отсортирует данные по имени. В итоге получаем, что файлы будут идти в порядке их изменения.
Лимит на количество выводимых результатов
Самый распространенный пример — вывести один файл, который последний раз был модифицирован. Берем пример с сортировкой и добавляем следующее:
find /data -type f -printf ‘%TY-%Tm-%Td %TT %p\n’ | sort -r | head -n 1
Поиск с действием (exec)
1. Найти только файлы, которые начинаются на sess_ и удалить их:
find . -name «sess_*» -type f -print -exec rm {} \;
* -print использовать не обязательно, но он покажет все, что будет удаляться, поэтому данную опцию удобно использовать, когда команда выполняется вручную.
2. Переименовать найденные файлы:
find . -name «sess_*» -type f -exec mv {} new_name \;
или:
find . -name «sess_*» -type f | xargs -I ‘{}’ mv {} new_name
3. Вывести на экран количество найденных файлов и папок, которые заканчиваются на .tmp:
find . -name «*.tmp» | wc -l
4. Изменить права:
find /home/user/* -type d -exec chmod 2700 {} \;
* в данном примере мы ищем все каталоги (type d) в директории /home/user и ставим для них права 2700.
5. Передать найденные файлы конвееру (pipe):
find /etc -name ‘*.conf’ -follow -type f -exec cat {} \; | grep ‘test’
* в данном примере мы использовали find для поиска строки test в файлах, которые находятся в каталоге /etc, и название которых заканчивается на .conf. Для этого мы передали список найденных файлов команде grep, которая уже и выполнила поиск по содержимому данных файлов.
6. Произвести замену в файлах с помощью команды sed:
find /opt/project -type f -exec sed -i -e «s/test/production/g» {} \;
* находим все файлы в каталоге /opt/project и меняем их содержимое с test на production.
8.9. Знаки препинания в фразе со словами цитирующего внутри цитаты
8.9.1. На месте разрыва цитаты — запятая, точка с запятой, двоеточие, тире
В этом случае, а также при отсутствии знаков препинания на месте разрыва слова цитирующего отделяют от текста цитаты с обеих сторон запятой и тире (, —). Напр.:
В источнике: | В издании с цитатой: |
---|---|
Я стал неспособен к благородным порывам… | «Я, — признается Печорин, — стал неспособен к благородным порывам…» |
…Мое сердце превращается в камень, и ничто его не разогреет снова. М. Лермонтов. Герой нашего времени |
«…Мое сердце превращается в камень, — безнадежно заключает Печорин, — и ничто его не разогреет снова». |
Слишком однобокий и сильный интерес чрезмерно увеличивает напряжение человеческой жизни; еще один толчок, и человек сходит с ума. Д. Хармс |
«Слишком однобокий и сильный интерес чрезмерно увеличивает напряжение человеческой жизни, — размышляет Д. Хармс, — еще один толчок, и человек сходит с ума». |
Цель всякой человеческой жизни одна: бессмертие. Д. Хармс |
«Цель всякой человеческой жизни одна, — записывает в своем дневнике Д. Хармс, — бессмертие». |
Подлинный интерес — это главное в нашей жизни. Д. Хармс |
«Подлинный интерес, — утверждает Д. Хармс, — это главное в нашей жизни». |
8.9.2. На месте разрыва цитаты — точка
В этом случае перед словами цитирующего ставят запятую и тире (, —), а после этих слов — точку и тире (. —), начиная вторую часть с прописной буквы.
В источнике: | В издании с цитатой: |
---|---|
…Мое сердце превращается в камень, и ничто его не разогреет снова. Я готов на все жертвы, кроме этой… | «…Мое сердце превращается в камень, и ничто его не разогреет снова, — заключает Печорин. — Я готов на все жертвы, кроме этой…» |
8.9.3. На месте разрыва цитаты — вопросительный или восклицательный знак
В этом случае перед словами цитирующего оставляют вопросительный или восклицательный знак и тире (? —; ! —), а после слов цитирующего ставят точку и тире (. —), начиная вторую часть цитаты с прописной буквы, или запятую и тире (, —), начиная вторую часть цитаты со строчной буквы, если в источнике текст после вопросительного (восклицательного) знака начинается со строчной буквы. Напр.:
В источнике: | В издании с цитатой: |
---|---|
Я иногда себя презираю… не оттого ли я презираю и других?.. Я стал неспособен к благородным порывам; я боюсь показаться смешным самому себе. …Прости любовь! мое сердце превращается в камень, и ничто его не разогреет снова. |
«Я иногда себя презираю… не оттого ли я презираю и других?.. — признается Печорин. — Я стал неспособен к благородным порывам…»
«…Прости любовь! — пишет Печорин в своем журнале, — мое сердце превращается в камень…» |
8.9.4. На месте разрыва цитаты — многоточие
В этом случае перед словами цитирующего ставят многоточие и тире (… —), а после слов цитирующего — запятую и тире (, —), если в источнике текст после многоточия начинался со строчной буквы, и точку и тире (. —), если в источнике текст после многоточия начинался с прописной буквы. Напр.:
В источнике: | В издании с цитатой: |
---|---|
Я иногда себя презираю… не оттого ли я презираю и других?.. | «Я иногда себя презираю… — признается Печорин, — не оттого ли я презираю и других?..» |
Это какой-то врожденный страх, неизъяснимое предчувствие… Ведь есть люди, которые безотчетно боятся пауков, тараканов, мышей… | «Это какой-то врожденный страх, неизъяснимое предчувствие… — ищет объяснения Печорин, — Ведь есть люди, которые безотчетно боятся пауков, тараканов, мышей…» |
Рекурсивно получить список всех файлов и папок
Этот пример рекурсивного поиска файлов и папок не прервется в случае ошибки, а продолжится дальше. Вместо массива здесь используется List для записи списка файлов и папок.
List<string> ls = GetRecursFiles(PathToFolder); foreach (string fname in ls) { MessageBox.Show(fname); } private List<string> GetRecursFiles(string start_path) { List<string> ls = new List<string>(); try { string[] folders = Directory.GetDirectories(start_path); foreach (string folder in folders) { ls.Add("Папка: " + folder); ls.AddRange(GetRecursFiles(folder)); } string[] files = Directory.GetFiles(start_path); foreach (string filename in files) { ls.Add("Файл: " + filename); } } catch (System.Exception e) { MessageBox.Show(e.Message); } return ls; }
Плюсом такого рекурсивного поиска так же является то, что можно еще и контролировать уровень вложенности и делать, например, отступы для разных уровней.
Получить список папок в папке
Для получения списка папок можно воспользоваться методом GetDirectories.
Пример поиска папок с помощью GetDirectories:
string[] allfolders = Directory.GetDirectories(PathToFolder); foreach (string folder in allfolders) { Console.WriteLine(folder); }
Метод GetDirectories может принимать 3 параметра, из которых первый обязательный:
GetDirectories(String path, String pattern, SearchOption options)
path — путь к папке, в которой ищем файлы;
pattern — шаблон поиска файлов (например, *.txt или ??abc.doc);
options — способ поиска, указывающий нужно искать только в текущей папке (SearchOption.TopDirectoryOnly) или во вложенных тоже (SearchOption.AllDirectories).
По аналогии с поиском файлов, есть метод EnumerateDirectories, который позволяет обрабатывать список папок не дожидаясь его полного получения (доступен в .NET Framework 4.0 и выше).
Метод EnumerateDirectories аналогично GetDirectories принимает 3 параметра:
path — путь к папке, в которой ищем файлы;
pattern — шаблон поиска файлов;
options — способ поиска.
Пример поиска папок с помощью EnumerateDirectories:
IEnumerable allfolders = Directory.EnumerateDirectories(PathToFolder); foreach (string folder in allfolders) { Console.WriteLine(folder); }
Примечание: Во всех способах получения файлов и папок можно во втором параметре указывать шаблон поиска pattern, однако в нем можно использовать только * (любое количество любых символов) и ? (один любой символ) для указания шаблона поиска, регулярные выражения не поддерживаются.