Настройка и работа в Linux



              

Поиск в Unix Часть 2 - часть 3


Эта команда имеет самый простой синтаксис из всех трех и, к тому же, является самым эффективным способом удаления файлов. Ключ «-delete» вообще не требует создания отдельного процесса, так как все операции по удалению файлов производятся процессом find. К тому же, этот способ будет работать в любом случае, в отличие от второго способа использованием команды xargs, которая может привести к ошибке, если будет найдено слишком много файлов и они не смогут убраться в буфер командной строки. Если вы будете что-нибудь искать в многоуровневой системе каталогов или имена найденных файлов будут слишком длинные, то скорее всего вы натолкнетесь на это ограничение. Если вас интересует размер этого буфера, воспользуйтесь следующей командой: sysctl -a | grep kern.argmax kern.argmax: 65536

Число 65536 означает максимальное количество байт (символов) в буфере аргумента.

Вас может заинтересовать какие файлы удалит команда find. В моем примере я просто удаляю старые файлы из моей тестового каталога. Если вы боитесь, что команда find может удалить некоторые нужные вам файлы, для начала выполните команду: find . -name "*.old" -print

Она выведет вам список файлов, подходящих под образец. Если список файлов соответствует вашим ожиданиям, воспользуйтесь ключом «-delete», как описано выше. Однако есть и другой способ – вы можете воспользоваться ключом «-ok»: find . -name "*.old" -ok rm \;

Ключ «-ok» заставит команду find выдавать запрос перед удалением файла. Обратите внимание, что для удаления я использовал команду rm, а не ключ «-delete». Символы окончания команды «\;» требуются как и в случае ключа «-exec».

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

При помощи ключа «-ls» можно получить следующую информацию о найденных файлах: номер inode в файловой системе, размер в блоках, права доступа, количество жестких ссылок (hard link), имя владельца, группу, размер в байтах, время последней модификации, а так же имя найденного файла. Следующая команда показывает мне первые десять подкаталогов в моем домашнем каталоге. Обратите внимание, на то, что для поиска каталогов используется ключ «-type» с параметром «d»: cd find . -type d -ls | head 976142 8 drwxr-xr-x 39 genisis wheel 4096 Mar 3 17:52 . 1413099 2 drwxr-xr-x 2 genisis wheel 512 Mar 3 13:38 ./pdfs 373539 2 drwxr-xr-x 2 genisis wheel 512 Feb 6 12:38 ./tst 1087249 2 drwxr-xr-x 2 genisis wheel 512 Oct 4 07:29 ./perlscripts 650764 2 drwx------ 2 genisis wheel 512 Mar 3 17:52 ./mail 706616 2 drwx------ 4 genisis wheel 512 Sep 22 14:29 ./.kde 706635 2 drwx------ 11 genisis wheel 512 Nov 7 12:36 ./.kde/share 706636 4 drwx------ 3 genisis wheel 1536 Mar 2 18:38 ./.kde/share/config 785986 2 drwx------ 2 genisis wheel 512 Sep 22 14:36 ./.kde/share/config/colors 706682 2 drwx------ 3 genisis wheel 512 Mar 2 18:36 ./.kde/share/fonts




Содержание  Назад  Вперед