- Команда find в Linux – мощный инструмент сисадмина
- Поиск по имени
- Поиск по типу файла
- Поиск по размеру файла
- Единицы измерения файлов:
- Поиск пустых файлов и каталогов
- Поиск времени изменения
- Поиск по времени доступа
- Поиск по имени пользователя
- Поиск по набору разрешений
- Операторы
- Действия
- -delete
- Заключение
- Исполняемый файл есть, но его нет
- Linux и Windows. Пропали файлы
Команда 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.
- «+» — Поиск файлов больше заданного размера
- «-» — Поиск файлов меньше заданного размера
- Отсутствие знака означает, что размер файлов в поиске должен полностью совпадать.
В данном случае поиск выведет все файлы более 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 можно использовать для поиска:
- Файлов по имени.
- Дате последнего доступа.
- Дате последнего изменения.
- Имени пользователя (владельца файла).
- Имени группы.
- Размеру.
- Разрешению.
- Другим критериям.
С полученными результатами можно сразу выполнять различные действия, такие как:
- Удаление.
- Копирование.
- Перемещение в другой каталог.
Команда 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* с разными параметрами.
Например, /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, если руки кривые.
Источник