Linux если файл отсутствует

Команда find в Linux – мощный инструмент сисадмина

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

Команда find – это невероятно мощный инструмент, позволяющий искать файлы не только по названию, но и по:

  • Дате добавления.
  • Содержимому.
  • Регулярным выражениям.

Данная команда будет очень полезна системным администраторам для:

  • Управления дисковым пространством.
  • Бэкапа.
  • Различных операций с файлами.

Команда find в Linux производит поиск файлов и папок на основе заданных вами критериев и позволяет выполнять действия с результатами поиска.

Синтаксис команды find:

  • directory-to-search (каталог поиска) – это отправной каталог, с которой find начинает поиск файлов по всем подкаталогам, которые находятся внутри. Если не указать путь, тогда поиск начнется в текущем каталоге;
  • criteria (критерий) – критерий, по которым нужно искать файлы;
  • action (действие) – что делать с каждым найденным файлом, соответствующим критериям.

Поиск по имени

Следующая команда ищет файл s.txt в текущем каталоге:

  • . (точка) – файл относится к нынешнему каталогу
  • -name – критерии по которым осуществляется поиск. В данном случае поиск по названию файла.

В данном случае критерий -name учитывает только символы нижнего регистра и файл S.txt не появиться в результатах поиска. Чтобы убрать чувствительность к регистру необходимо использовать –iname.

Для поиска всех изображений c расширением .png нужно использовать шаблон подстановки *.png:

Можно использовать название каталога для поиска. Например, чтобы с помощью команды find найти все png изображения в каталоге home:

Если выдает слишком много ошибок в отказе разрешения, тогда можно добавить в конец команды – 2> /dev/null. Таким образом сообщения об ошибках будут перенаправляться по пути dev/null, что обеспечит более чистую выдачу.

Поиск по типу файла

Критерий -type позволяет искать файлы по типу, которые бывают следующих видов:

  • f – простые файлы;
  • d – каталоги;
  • l – символические ссылки;
  • b – блочные устройства (dev);
  • c – символьные устройства (dev);
  • p – именованные каналы;
  • s – сокеты;

Например, указав критерий -type d будут перечислены только каталоги:

Поиск по размеру файла

Допустим, что вам необходимо найти все большие файлы. Для таких ситуаций подойдет критерий -size.

  • «+» — Поиск файлов больше заданного размера
  • «-» — Поиск файлов меньше заданного размера
  • Отсутствие знака означает, что размер файлов в поиске должен полностью совпадать.
Читайте также:  Kyocera 1020 mfp драйвер linux

В данном случае поиск выведет все файлы более 1 Гб (+1G).

Единицы измерения файлов:

Поиск пустых файлов и каталогов

Критерий -empty позволяет найти пустые файлы и каталоги.

Поиск времени изменения

Критерий -cmin позволяет искать файлы и каталоги по времени изменения. Для поиска всех файлов, измененных за последний час (менее 60 мин), нужно использовать -60:

Таким образом можно найти все файлы в текущем каталоге, которые были созданы или изменены в течение часа (менее 60 минут).

Для поиска файлов, которые наоборот были изменены в любое время кроме последнего часа необходимо использовать +60.

Поиск по времени доступа

Критерий -atime позволяет искать файлы по времени последнего доступа.

Таким образом можно найти файлы, к которым не обращались последние полгода (180 дней).

Поиск по имени пользователя

Опция –user username дает возможность поиска всех файлов и каталогов, принадлежащих конкретному пользователю:

Таким образом можно найти все файлы пользователя tisha в каталоге home, а 2>/dev/null сделает выдачу чистой без ошибок в отказе доступа.

Поиск по набору разрешений

Критерий -perm – ищет файлы по определенному набору разрешений.

Поиск файлов с разрешениями 777.

Операторы

Для объединения нескольких критериев в одну команду поиска можно применять операторы:

Например, чтобы найти файлы размером более 1 Гбайта пользователя tisha необходимо ввести следующую команду:

Если файлы могут принадлежать не только пользователю tisha, но и пользователю pokeristo, а также быть размером более 1 Гбайта.

Перед скобками нужно поставить обратный слеш «\».

Действия

К команде find можно добавить действия, которые будут произведены с результатами поиска.

  • -delete — Удаляет соответствующие результатам поиска файлы
  • -ls — Вывод более подробных результатов поиска с:
    • Размерами файлов.
    • Количеством inode.
  • -print Стоит по умолчанию, если не указать другое действие. Показывает полный путь к найденным файлам.
  • -exec Выполняет указанную команду в каждой строке результатов поиска.

-delete

Полезен, когда необходимо найти и удалить все пустые файлы, например:

Перед удалением лучше лишний раз себя подстраховать. Для этого можно запустить команду с действием по умолчанию -print.

Данное действие является особенным и позволяет выполнить команду по вашему усмотрению в результатах поиска.

  • command – это команда, которую вы желаете выполнить для результатов поиска. Например:
    • rm
    • mv
    • cp
  • <> – является результатами поиска.
  • \; — Команда заканчивается точкой с запятой после обратного слеша.

С помощью –exec можно написать альтернативу команде –delete и применить ее к результатам поиска:

Другой пример использования действия -exec:

Таким образом можно скопировать все .jpg изображения в каталог backups/fotos

Заключение

Команду find можно использовать для поиска:

  • Файлов по имени.
  • Дате последнего доступа.
  • Дате последнего изменения.
  • Имени пользователя (владельца файла).
  • Имени группы.
  • Размеру.
  • Разрешению.
  • Другим критериям.

С полученными результатами можно сразу выполнять различные действия, такие как:

  • Удаление.
  • Копирование.
  • Перемещение в другой каталог.
Читайте также:  Windows 64 bit compatibility

Команда find может сильно облегчить жизнь системному администратору, а лучший способ овладеть ей – больше практиковаться.

Источник

Исполняемый файл есть, но его нет

Скачал линуховый клиент для фотохостинга photofile. В архиве исполняемый файл. Пытаюсь запустить.

ему там может чего надо еще? посмотри ldd photofile что говорит? есть ли у тебя все что нужно?

Похоже, ему твоя glibc не нравится

а что если это файл скормить gdb? может он чего больше скажет?

Ну надо же, они что в Сети фуфло распространяют.

Хотя такая же штука была когда я пытался запустить скачанный с офиц. сайта firefox. Подозрительно всё это.

А ты с архитектурой не промахнулся?

ппц, линуксоиды скачивают и запускают бинарники. Куда катится мир?

А это не баш-скрипт ли часом? (:
Текстовым редактором откройте.

Так бывает, когда неправильно shabang указан.

а чмод + икс не нужно сделать?

>Так бывает, когда неправильно shabang указан.

тогда обычно bad interpreter говорят вроде перед No such file or directory

>а чмод + икс не нужно сделать?

>а чмод + икс не нужно сделать?

не читал первое сообщение? там же вывод ls -l есть.

-rwxr-xr-x 1 sunny sunny 10771230 Май 19 2008 photofile

ну проглядел, чо

думаешь noexec? там ошибка другая была бы емнип.

file photofile
head -n 1 photofile

>Ну надо же, они что в Сети фуфло распространяют.

Пока что видно только что ты «в Сети фуфло распространяешь»

Это плохой файл, не исполняемый. Удалите его.

лддэхни его и посмотри какой библиотеки нехватает.

>Как это понять, файл есть, но его вдруг нет? Или это какая-то защита, предотвращающая от запуска чего не попадя? Дистрибутив — Debian

Ну видимо файл запускается, shell читает sha-bang, там написано /bin/bash, запускается /bin/bash ./photfile, но вот эта команда почему-то не видит этого файла. Попробуйте напрямую:

Ну и сам файл поглядите. (xxd | head и file)

Покажи file photofile
А заодно uname -a

Не, лучше наверное не показывай.

Дай угадаю — у тебя amd64?
А ты запускаешь на ней 32-битный бинарник, отсюда проблемы.
Копай в эту сторону.

и оно покажет что к чему и почему.

Судя по размеру, вряд ли

и оно покажет что к чему и почему.

Дай угадаю — у тебя amd64? А ты запускаешь на ней 32-битный бинарник, отсюда проблемы. Копай в эту сторону.

У меня на самом деле процессор AMD AM2+ 64 двухядерный. И система вся архитектуры amd64. Но вроде как бы 32-битные программы должны без проблем запускаться на 64-битной платформе, всегда так было. Вот 32-битный skype запускается.

А readelf что показывает? Признаёт этот файл исполняемым?

Попробуйте скормить этот файл /lib/ld-linux* с разными параметрами.

Читайте также:  Как заменить курсор мыши windows 10

Например, /lib/ld-linux* —list ./photofile

>for GNU/Linux 2.2.5

Может, в этом дело?

Под /lib/ld-linux вы это имели в виду?

Пишет, что какая-то ошибка. И что это означает?

> И что это означает?
Рядом, случаем, нету другого ld-linux? Если нет, поищите в репозитории пакет для совместимости с 32-битными приложениями (странно, почему же skype работает?)

Может быть, /lib32/ld-linux* ?

linux32 ./photofile что скажет?

zgrep -E ‘CONFIG_X86_32|CONFIG_IA32_EMUL’ /proc/config.gz

это ж не библиотека
p.s. а мне викторина нравится ))

> это ж не библиотека
Но такой файл есть в пакете libc6-i386, так что имеет смысл попробовать им воспользоваться. Или Вы не об этом?

Источник

Linux и Windows. Пропали файлы

У меня на нетбуке стоит Windows XP Home и Linux MINT 11.
Записал я из под Linux файлы на жесткий диск с NTFS. Перегружаюсь в Windows. Запускается какая-то проверка на синем экране. Наподобие проверки жесткого диска. Не помню дословно всего, что там писалось. На сколько запомнил, то говорилось, что надо проверить файлы. Проверка состояла из 3 этапов. На одном из них мелькали имена файлов с моего ЖД. Еще было про какие-то индексы. В конце написало что Windows что-то там восстановил. Захожу в Windows. Чую неладное и захожу в Мой компьютер проверить. На диске D: у меня было 1,5 Гб свободного места. А стало 8 Гб. Мне сложно передать все что я подумал и почувствовал. Некоторые папки пропали целиком. Причем не с каким-то хламом, а с моими лабораторными по учебе. Одну из них мне завтра сдавать. Зато в корне диска D: появилась папка found.000 весом около 115 Мб, а в ней лежат папки dir00xx.chk (где xx — числа от 00 до 47) и файлы file00xx (xx от 00 до 22).
1й вопрос: Как восстановить все данные которые пропали? Я уже имел дело с восстановлением данных. Использовал R-Studio. Но здесь какой-то странный случай.
2й: Можно ли как-нибудь остановить такие безобразия? Так как такое случается уже не в первый раз. Но раньше пропадало по мелочи. Какая нибудь музыка.
Очень надеюсь на вашу помощь.
P.S. Мне очень нравится Linux. Но чтобы что-то в нем сделать надо потратить много времени, которого и так нет. А тут еще и новые проблемы. Так что я уже разочаровываюсь.

А бывают еще и такие которые винду захибернейтят вместо выключения, потом на ФС что-то запишут и винду разбудят. Весело.

Не буду далеко ходить. Вчера я менял MAC-адрес в нетбуке. Пока разобрался со всеми командами и настроил прошло более 30 мин.

Настраивал Wi-Fi 1 час. Он так и не заработал. Хотя делал все по инструкции

Ну тогда сиди на windows, если руки кривые.

Источник

Оцените статью