One place for hosting & domains

      Cómo usar Find y Locate para buscar archivos en Linux


      Introducción

      Un problema al que los usuarios se enfrentan cuando utilizan por primera vez una máquina Linux es cómo encontrar los archivos que buscan.

      En esta guía, se explicará cómo utilizar el comando llamado find de manera adecuada. Eso lo ayudará a buscar archivos en su VPS utilizando diversos filtros y parámetros. También abordaremos brevemente el comando locate, que se puede utilizar para buscar archivos de distinta manera.

      Cómo buscar por nombre

      La forma más evidente de buscar archivos es por nombre.

      Para encontrar un archivo por nombre, escriba lo siguiente:

      Distingue entre mayúsculas y minúsculas, lo que significa que una búsqueda de file será diferente a File.

      Para encontrar un archivo por nombre, pero ignorar mayúsculas o minúsculas en la consulta, escriba lo siguiente:

      Si desea encontrar todos los archivos que no se ajustan a un patrón específico, puede invertir la búsqueda con -not o !. Si utiliza !, debe quitar el carácter de forma que bash no intente interpretarlo antes que find pueda actuar:

      • find -not -name "query_to_avoid"

      o

      • find ! -name "query_to_avoid"

      Cómo buscar por tipo

      Puede especificar el tipo de archivos que desea encontrar con el parámetro -type. Funciona de la siguiente manera:

      • find -type type_descriptor query

      A continuación, encontrará algunos de los descriptores más frecuentes que puede utilizar para especificar el tipo de archivo:

      Por ejemplo, si quisiéramos encontrar todos los dispositivos de caracteres en nuestro sistema, podríamos ejecutar el siguiente comando:

      Output

      /dev/parport0 /dev/snd/seq /dev/snd/timer /dev/autofs /dev/cpu/microcode /dev/vcsa7 /dev/vcs7 /dev/vcsa6 /dev/vcs6 /dev/vcsa5 /dev/vcs5 /dev/vcsa4 . . .

      Podemos buscar todos los archivos que terminan en .conf como se muestra a continuación:

      • find / -type f -name "*.conf"

      Output

      /var/lib/ucf/cache/:etc:rsyslog.d:50-default.conf /usr/share/base-files/nsswitch.conf /usr/share/initramfs-tools/event-driven/upstart-jobs/mountall.conf /usr/share/rsyslog/50-default.conf /usr/share/adduser/adduser.conf /usr/share/davfs2/davfs2.conf /usr/share/debconf/debconf.conf /usr/share/doc/apt-utils/examples/apt-ftparchive.conf . . .

      Cómo filtrar por fecha y tamaño

      Find le proporciona diversas maneras de filtrar resultados por tamaño y fecha.

      Tamaño

      Puede filtrar por tamaño utilizando el parámetro -size.

      Añadimos un sufijo al final de nuestro valor con el que se especifica cómo se cuenta. Estas son algunas opciones populares:

      • c: bytes

      • k: kilobytes

      • M: megabytes

      • G: gigabytes

      • b: bloques de 512 bytes

      Para encontrar todos los archivos que son exactamente de 50 bytes, escriba lo siguiente:

      Para encontrar todos los archivos de menos de 50 bytes, podemos utilizar la siguiente forma:

      Para encontrar todos los archivos de más de 700 megabytes, podemos utilizar el siguiente comando:

      Fecha

      Linux almacena datos de fecha de las fechas de acceso, fechas de modificación y fechas de cambio.

      • Fechas de acceso: La última vez que se leyó o se escribió un archivo.

      • Fecha de modificación: La última vez que el contenido del archivo se modificó.

      • Fecha de cambio: La última vez que se modificaron los metadatos inode del archivo.

      Podemos utilizarlos con los parámetros -atime, -mtime y -ctime. Con estos, se pueden usar los signos de más y menos para especificar mayor o menor que, como hicimos con el tamaño.

      Con el valor de este parámetro, se especifica cuántos días atrás le gustaría buscar.

      Para encontrar archivos que tengan una fecha de modificación de un día atrás, escriba lo siguiente:

      Si queremos archivos a los que se haya accedido hace menos de un día, podemos escribir lo siguiente:

      Para obtener archivos cuya metainformación se haya modificado hace más de 3 días, escriba lo siguiente:

      También existen algunos parámetros complementarios que podemos usar para especificar minutos en vez de días:

      Con esto, se mostrarán los archivos que se modificaron en el último minuto en el sistema.

      Find también puede hacer comparaciones con un archivo de referencia y mostrar los que son más recientes:

      Cómo buscar por propietario y permisos

      También puede buscar archivos por su propietario o propietario del grupo.

      Para hacerlo, utilice los parámetros -user y -group respectivamente. Busque un archivo que sea propiedad del usuario “syslog” ingresando lo siguiente:

      De igual manera, podemos especificar archivos que son propiedad del grupo “shadow” escribiendo lo siguiente:

      También podemos buscar archivos con permisos específicos.

      Si queremos que coincida un conjunto exacto de permisos, utilizamos esta forma:

      Eso relacionará los archivos con los permisos especificados.

      Si queremos especificar algún elemento con al menos esos permisos, puede utilizar esta forma:

      Eso relacionará cualquier archivo que tenga permisos adicionales. En este caso, se relacionaría un archivo con permisos de “744”.

      Cómo filtrar por profundidad

      Para esta sección, crearemos una estructura de directorio en un directorio temporal. Contendrá tres niveles de directorios, con diez directorios en el primer nivel. Cada directorio (incluido el directorio temporal) contendrá diez archivos y diez subdirectorios.

      Cree esta estructura ejecutando los siguientes comandos:

      • cd
      • mkdir -p ~/test/level1dir{1..10}/level2dir{1..10}/level3dir{1..10}
      • touch ~/test/{file{1..10},level1dir{1..10}/{file{1..10},level2dir{1..10}/{file{1..10},level3dir{1..10}/file{1..10}}}}
      • cd ~/test

      No dude en consultar las estructuras de directorios con ls y cd para entender cómo se organizan los elementos. Cuando termine, regrese al directorio de prueba:

      Trabajaremos en cómo obtener archivos específicos con esta estructura. Para comparar, primero probaremos un ejemplo con una búsqueda de nombre normal:

      Output

      ./level1dir7/level2dir8/level3dir9/file1 ./level1dir7/level2dir8/level3dir3/file1 ./level1dir7/level2dir8/level3dir4/file1 ./level1dir7/level2dir8/level3dir1/file1 ./level1dir7/level2dir8/level3dir8/file1 ./level1dir7/level2dir8/level3dir7/file1 ./level1dir7/level2dir8/level3dir2/file1 ./level1dir7/level2dir8/level3dir6/file1 ./level1dir7/level2dir8/level3dir5/file1 ./level1dir7/level2dir8/file1 . . .

      Aparecen muchos resultados. Si canalizamos el resultado en un contador, observamos que hay 1111 resultados en total:

      Output

      1111

      Probablemente, sean demasiados resultados para que le resulte útil en la mayoría de los casos. Intentemos reducirlo.

      Puede especificar la profundidad máxima de la búsqueda en el directorio de búsqueda de nivel superior:

      • find -maxdepth num -name query

      Para encontrar “file1” solo en los directorios de “level1” y superiores, puede especificar una profundidad máxima de 2 (1 para el directorio de nivel superior y 1 para los directorios de level1):

      • find -maxdepth 2 -name file1

      Output

      ./level1dir7/file1 ./level1dir1/file1 ./level1dir3/file1 ./level1dir8/file1 ./level1dir6/file1 ./file1 ./level1dir2/file1 ./level1dir9/file1 ./level1dir4/file1 ./level1dir5/file1 ./level1dir10/file1

      Esa lista es mucho más manejable.

      También se puede especificar un directorio mínimo si sabe que todos los archivos existen a partir de cierto punto en el directorio actual:

      • find -mindepth num -name query

      Podemos utilizarlo para encontrar solo los archivos al final de las ramas de los directorios:

      • find -mindepth 4 -name file

      Output

      ./level1dir7/level2dir8/level3dir9/file1 ./level1dir7/level2dir8/level3dir3/file1 ./level1dir7/level2dir8/level3dir4/file1 ./level1dir7/level2dir8/level3dir1/file1 ./level1dir7/level2dir8/level3dir8/file1 ./level1dir7/level2dir8/level3dir7/file1 ./level1dir7/level2dir8/level3dir2/file1 . . .

      Una vez más, debido a nuestra estructura de directorio con ramificaciones, obtendremos un gran número de resultados (1000).

      Puede combinar los parámetros de profundidad min y max para centrarse en un rango más pequeño:

      • find -mindepth 2 -maxdepth 3 -name file

      Output

      ./level1dir7/level2dir8/file1 ./level1dir7/level2dir5/file1 ./level1dir7/level2dir7/file1 ./level1dir7/level2dir2/file1 ./level1dir7/level2dir10/file1 ./level1dir7/level2dir6/file1 ./level1dir7/level2dir3/file1 ./level1dir7/level2dir4/file1 ./level1dir7/file1 . . .

      Cómo ejecutar y combinar comandos find

      Puede ejecutar un comando auxiliar arbitrario en todo lo que se encuentre con find mediante el uso del parámetro -exec. Eso se invoca de la siguiente manera:

      • find find_parameters -exec command_and_params {} ;

      El {} se utiliza como un marcador de posición para los archivos que se encuentren con find. El ; se utiliza para que find sepa dónde termina el comando.

      Por ejemplo, podríamos encontrar los archivos en la sección anterior que tenían 644 permisos y modificarlos para que tengan 664 permisos:

      • cd ~/test
      • find . -type f -perm 644 -exec chmod 664 {} ;

      Luego, podríamos cambiar los permisos del directorio de esta manera:

      • find . -type d -perm 755 -exec chmod 700 {} ;

      Si desea encadenar diferentes resultados, puede usar los comandos -and o -or. Si se omite, se asume el comando -and.

      • find . -name file1 -or -name file9

      Cómo encontrar archivos utilizando Locate

      Una alternativa a utilizar find es el comando locate. A menudo, este comando es más rápido y puede realizar una búsqueda en todo el sistema de archivos con facilidad.

      Puede instalar el comando en Debian o Ubuntu con apt:

      En CentOS, utilice dnf en su lugar:

      La razón por la que locate es más rápido que find es porque utiliza una base de datos de los archivos en el sistema de archivos.

      Normalmente, la base de datos se actualiza una vez al día con una secuencia de comandos de Cron, pero puede actualizarla de forma manual escribiendo lo siguiente:

      Ejecute ese comando ahora. Recuerde que la base de datos siempre debe estar actualizada si desea encontrar archivos recientemente adquiridos o creados.

      Para encontrar archivos con locate, simplemente utilice la siguiente sintaxis:

      Puede filtrar el resultado de alguna manera.

      Por ejemplo, para solo obtener archivos que contengan la consulta en sí, en vez de obtener cada archivo que contenga la consulta en los directorios en que se encuentre, puede utilizar el -b solamente para buscar el “nombre de base”:

      Para que con locate solo se obtengan resultados que todavía existen en el sistema de archivos (que no se eliminaron entre la última invocación de updatedb y la invocación actual de locate), utilice el indicador -e:

      Para ver estadísticas sobre la información que se catalogó con locate, utilice la opción -S:

      Output

      Database /var/lib/mlocate/mlocate.db: 3,315 directories 37,228 files 1,504,439 bytes in file names 594,851 bytes used to store database

      Conclusión

      Find y locate son buenas maneras de encontrar archivos en su sistema. Le corresponde decidir cuál de estas herramientas es la adecuada para cada situación.

      Find y locate son comandos potentes que se pueden reforzar combinándolos con otras utilidades mediante canalizaciones. Experimente con filtros utilizando comandos como wc, sort y grep.



      Source link

      Como usar o find e locate para localizar arquivos no Linux


      Introdução

      Um problema comum de usuários ao utilizar uma máquina Linux pela primeira vez é como localizar os arquivos que eles estão procurando.

      Este guia irá abordar como usar o comando find nomeado apropriadamente. Isso irá ajudar a pesquisar arquivos em seu VPS usando uma variedade de filtros e parâmetros. Vamos também abordar brevemente o comando locate, que pode ser usado para localizar arquivos de outra forma.

      Pesquisando por nome

      A maneira mais óbvia de localizar arquivos é pelo nome.

      Para encontrar um arquivo pelo nome, digite:

      O comando diferencia letras maiúsculas de minúsculas, o que significa que pesquisar por file é diferente de pesquisar por File.

      Para encontrar um arquivo pelo nome, mas não diferenciar maiúsculas de minúsculas, digite:

      Se quiser encontrar todos os arquivos que não aderem a um padrão específico, inverta a pesquisa com -not ou !. Se você usar !, é necessário adicionar um caractere de escape para que o bash não tente interpretá-lo antes do comando find agir:

      • find -not -name "query_to_avoid"

      ou

      • find ! -name "query_to_avoid"

      Pesquisando por tipo

      É possível especificar o tipo de arquivo que deseja encontrar com o parâmetro -type. Funciona desta forma:

      • find -type type_descriptor query

      Alguns dos descritores mais comuns que você pode usar para especificar o tipo de arquivo estão aqui:

      Por exemplo, se quisermos encontrar todos os dispositivos de caracteres em nosso sistema, emitimos este comando:

      Output

      /dev/parport0 /dev/snd/seq /dev/snd/timer /dev/autofs /dev/cpu/microcode /dev/vcsa7 /dev/vcs7 /dev/vcsa6 /dev/vcs6 /dev/vcsa5 /dev/vcs5 /dev/vcsa4 . . .

      Podemos pesquisar todos os arquivos que terminam em .conf desta forma:

      • find / -type f -name "*.conf"

      Output

      /var/lib/ucf/cache/:etc:rsyslog.d:50-default.conf /usr/share/base-files/nsswitch.conf /usr/share/initramfs-tools/event-driven/upstart-jobs/mountall.conf /usr/share/rsyslog/50-default.conf /usr/share/adduser/adduser.conf /usr/share/davfs2/davfs2.conf /usr/share/debconf/debconf.conf /usr/share/doc/apt-utils/examples/apt-ftparchive.conf . . .

      Filtrando por tempo e tamanho

      O comando find oferece várias maneiras de filtrar resultados por tamanho e tempo.

      Tamanho

      É possível filtrar por tamanho usando o parâmetro -size.

      Adicionamos um sufixo no final do nosso valor que especifica como estamos contando. Estas são algumas opções populares:

      • c: bytes

      • k: Kilobytes

      • M: Megabytes

      • G: Gigabytes

      • b: blocos de 512 bytes

      Para encontrar todos os arquivos que possuem exatamente 50 bytes, digite:

      Para encontrar todos os arquivos com menos de 50 bytes, usamos esta forma:

      Para encontrar todos os arquivos com mais de 700 Megabytes, usamos este comando:

      Tempo

      O Linux armazena dados de tempo sobre o horário de acesso, horário de modificação e horário de alteração.

      • Horário de acesso: horário da última vez que um arquivo foi lido ou escrito.

      • Horário de modificação: horário da última vez que o conteúdo do arquivo foi modificado.

      • Horário de alteração: horário da última vez que os meta-dados do inode do arquivo foram alterados.

      Podemos usá-los com os parâmetros -atime, -mtime e -ctime. Eles podem usar os símbolos + e - para especificar maior que ou menor que, como fizemos com o tamanho.

      O valor deste parâmetro especifica quantos dias atrás você gostaria de pesquisar.

      Para encontrar arquivos que possuem um horário de modificação de um dia atrás, digite:

      Se quisermos arquivos que foram acessados há menos de um dia, digitamos:

      Para obter arquivos que tiveram seus metadados alterados há mais de 3 dias, digite:

      Existem também alguns parâmetros complementares que podem ser usados para especificar minutos em vez de dias:

      Isso irá encontrar os arquivos que foram modificados no sistema no último minuto.

      O find também é capaz de fazer comparações com um arquivo de referência e retornar as que são mais novas:

      Pesquisando por proprietário e permissões

      Também é possível pesquisar arquivos pelo proprietário do arquivo ou proprietário do grupo.

      Isso é feito usando os parâmetros -user e -group respectivamente. Encontre um arquivo de propriedade do usuário “syslog” digitando:

      Da mesma forma, é possível especificar arquivos de propriedade do grupo “shadow” digitando:

      Também podemos pesquisar arquivos com permissões específicas.

      Se quisermos que haja correspondência com um conjunto específico de permissões, usamos esta forma:

      Isso irá encontrar arquivos com as permissões especificadas.

      Se quisermos especificar qualquer coisa com pelo menos essas permissões, use esta forma:

      Isso irá encontrar qualquer arquivo correspondente que tenha permissões adicionais. Neste caso, um arquivo com permissões de “744” seria correspondente.

      Filtrando por profundidade

      Para esta seção, iremos criar uma estrutura de diretório em um diretório temporário. Ela irá conter três níveis de diretórios, com dez diretórios no primeiro nível. Cada diretório (incluindo o diretório temporário) irá conter dez arquivos e dez subdiretórios.

      Crie essa estrutura emitindo os seguintes comandos:

      • cd
      • mkdir -p ~/test/level1dir{1..10}/level2dir{1..10}/level3dir{1..10}
      • touch ~/test/{file{1..10},level1dir{1..10}/{file{1..10},level2dir{1..10}/{file{1..10},level3dir{1..10}/file{1..10}}}}
      • cd ~/test

      Sinta-se livre para verificar as estruturas de diretório com ls e cd para entender melhor como as coisas estão organizadas. Quando terminar, retorne ao diretório de teste:

      Iremos estudar como retornar arquivos específicos dessa estrutura. Vamos testar primeiro um exemplo com apenas uma pesquisa regular de nomes, para comparação:

      Output

      ./level1dir7/level2dir8/level3dir9/file1 ./level1dir7/level2dir8/level3dir3/file1 ./level1dir7/level2dir8/level3dir4/file1 ./level1dir7/level2dir8/level3dir1/file1 ./level1dir7/level2dir8/level3dir8/file1 ./level1dir7/level2dir8/level3dir7/file1 ./level1dir7/level2dir8/level3dir2/file1 ./level1dir7/level2dir8/level3dir6/file1 ./level1dir7/level2dir8/level3dir5/file1 ./level1dir7/level2dir8/file1 . . .

      Há muitos resultados. Se canalizarmos o resultado para um contador, vemos que há um total de 111 resultados:

      Output

      1111

      Provavelmente, esse número de resultados é grande de mais para lhe ser útil na maioria dos casos. Vamos tentar restringi-lo.

      Especifique a profundidade máxima da pesquisa no diretório de pesquisa de nível superior:

      • find -maxdepth num -name query

      Para encontrar “file1” apenas nos diretórios de “nível 1”, especifique uma profundidade máxima de 2 (1 para o diretório de nível superior e 1 para os diretórios de nível 1):

      • find -maxdepth 2 -name file1

      Output

      ./level1dir7/file1 ./level1dir1/file1 ./level1dir3/file1 ./level1dir8/file1 ./level1dir6/file1 ./file1 ./level1dir2/file1 ./level1dir9/file1 ./level1dir4/file1 ./level1dir5/file1 ./level1dir10/file1

      Essa é uma lista muito mais gerenciável.

      Também é possível especificar um diretório mínimo se souber que todos os arquivos existem depois de um determinado ponto abaixo do diretório atual:

      • find -mindepth num -name query

      Podemos usar isso para encontrar apenas os arquivos no final das ramificações de diretório:

      • find -mindepth 4 -name file

      Output

      ./level1dir7/level2dir8/level3dir9/file1 ./level1dir7/level2dir8/level3dir3/file1 ./level1dir7/level2dir8/level3dir4/file1 ./level1dir7/level2dir8/level3dir1/file1 ./level1dir7/level2dir8/level3dir8/file1 ./level1dir7/level2dir8/level3dir7/file1 ./level1dir7/level2dir8/level3dir2/file1 . . .

      Novamente, devido à nossa estrutura de diretórios ramificada, isso irá retornar um grande número de resultados (1000).

      É possível combinar os parâmetros de profundidade mínima e máxima para se concentrar em um intervalo estreito:

      • find -mindepth 2 -maxdepth 3 -name file

      Output

      ./level1dir7/level2dir8/file1 ./level1dir7/level2dir5/file1 ./level1dir7/level2dir7/file1 ./level1dir7/level2dir2/file1 ./level1dir7/level2dir10/file1 ./level1dir7/level2dir6/file1 ./level1dir7/level2dir3/file1 ./level1dir7/level2dir4/file1 ./level1dir7/file1 . . .

      Executando e combinando comandos find

      É possível executar um comando auxiliar arbitrário em tudo o que for encontrado pelo find usando o parâmetro -exec. Isso é chamado desta forma:

      • find find_parameters -exec command_and_params {} ;

      O {} é usado como espaço reservado para os arquivos que encontram correspondências. O ; é usado para que o comando find saiba onde o comando termina.

      Por exemplo, poderíamos encontrar os arquivos na seção anterior que possuía permissões 644 e modificá-los para possuir permissões 664:

      • cd ~/test
      • find . -type f -perm 644 -exec chmod 664 {} ;

      Em seguida, poderíamos alterar as permissões de diretório desta forma:

      • find . -type d -perm 755 -exec chmod 700 {} ;

      Se quiser encadear diferentes resultados juntos, use os comandos -and ou -or. O -and é considerado caso seja omitido.

      • find . -name file1 -or -name file9

      Pesquisar arquivos usando o locate

      Uma alternativa ao find é o comando locate. Esse comando é geralmente mais rápido e pode pesquisar todo o sistema de arquivos com facilidade.

      É possível instalar o comando no Debian ou no Ubuntu com o apt:

      No CentOS, use o dnf:

      A razão pela qual o locate é mais rápido que o find é porque ele depende de um banco de dados dos arquivos no sistema de arquivos.

      O banco de dados é geralmente atualizado uma vez por dia com um script cron, mas é possível atualizá-lo manualmente digitando:

      Execute este comando agora. Lembre-se, o banco de dados deve estar sempre atualizado caso você queira encontrar arquivos recentemente adquiridos ou criados.

      Para encontrar arquivos com o locate, use esta sintaxe:

      É possível filtrar o resultado de algumas maneiras.

      Por exemplo, para retornar apenas arquivos que contêm a própria consulta, em vez de retornar cada arquivo que possui a consulta nos diretórios que levam a ele, é possível usar o -b para pesquisar apenas o “nome base”:

      Para localizar apenas os resultados de retorno que ainda existem no sistema de arquivos (que não foram removidos entre a última chamada de updatedb e a chamada locate atual), utilize o sinalizador -e:

      Para ver estatísticas sobre as informações que o locate catalogou, use a opção -S:

      Output

      Database /var/lib/mlocate/mlocate.db: 3,315 directories 37,228 files 1,504,439 bytes in file names 594,851 bytes used to store database

      Conclusão

      Tanto o find quanto o locate representam boas maneiras de encontrar arquivos em seu sistema. Cabe a você decidir qual dessas ferramentas é apropriada em cada situação.

      O find e o locate são comandos poderosos que podem ser fortalecidos combinando-os com outros utilitários ao longo das pipelines. Experimente filtrar usando comandos como wc, sort e grep.



      Source link

      Cara Menggunakan Find dan Locate untuk Mencari Berkas di Linux


      Pengantar

      Satu masalah yang dialami pengguna saat kali pertama berhadapan dengan mesin Linux adalah cara menemukan berkas yang mereka cari.

      Panduan ini akan membahas cara menggunakan perintah aptly bernama find. Ini akan membantu Anda mencari berkas di VPS menggunakan berbagai filter dan parameter. Kita juga akan membahas secara singkat perintah locate, yang dapat digunakan untuk mencari berkas dengan cara lain.

      Cara paling mudah dimengerti untuk mencari berkas adalah menurut namanya.

      Untuk mencari berkas menurut nama, ketikkan:

      Perintah ini peka huruf kapital, yang berarti mencari berkas berbeda dengan mencari Berkas.

      Untuk mencari berkas menurut nama, tetapi mengabaikan huruf kapital kueri, ketikkan:

      Jika Anda ingin menemukan semua berkas yang tidak mematuhi pola tertentu, Anda dapat membalik pencarian dengan -not atau!. Jika menggunakan!, Anda harus meloloskan karakter agar bash tidak mencoba menafsirkannya sebelum find bertindak:

      • find -not -name "query_to_avoid"

      Atau

      • find ! -name "query_to_avoid"

      Anda dapat menentukan tipe berkas yang ingin ditemukan dengan parameter -type. Cara kerjanya seperti ini:

      • find -type type_descriptor query

      Beberapa deskriptor paling umum yang dapat Anda gunakan untuk menentukan tipe berkas adalah:

      • f: berkas reguler

      • d: direktori

      • l: tautan simbolis

      • c: perangkat karakter

      • b: perangkat blok

      Misalnya, jika ingin menemukan semua perangkat karakter di sistem, kita dapat memberikan perintah ini:

      Output

      /dev/parport0 /dev/snd/seq /dev/snd/timer /dev/autofs /dev/cpu/microcode /dev/vcsa7 /dev/vcs7 /dev/vcsa6 /dev/vcs6 /dev/vcsa5 /dev/vcs5 /dev/vcsa4 . . .

      Kita dapat mencari semua berkas yang berakhiran .conf seperti ini:

      • find / -type f -name "*.conf"

      Output

      /var/lib/ucf/cache/:etc:rsyslog.d:50-default.conf /usr/share/base-files/nsswitch.conf /usr/share/initramfs-tools/event-driven/upstart-jobs/mountall.conf /usr/share/rsyslog/50-default.conf /usr/share/adduser/adduser.conf /usr/share/davfs2/davfs2.conf /usr/share/debconf/debconf.conf /usr/share/doc/apt-utils/examples/apt-ftparchive.conf . . .

      Find memberi Anda beragam cara untuk memfilter hasil menurut ukuran dan waktu.

      Ukuran

      Anda dapat memfilter menurut ukuran dengan parameter -size.

      Kita menambahkan akhiran di belakang nilai yang menentukan cara perhitungan. Inilah beberapa opsi yang populer:

      • c: bita

      • k: Kilobita

      • M: Megabita

      • G: Gigabita

      • b: blok 512-bita

      Untuk menemukan semua berkas yang persis 50 bita, ketikkan:

      Untuk menemukan semua berkas yang kurang dari 50 bita, kita dapat menggunakan bentuk ini sebagai gantinya:

      Untuk menemukan semua berkas yang lebih dari 700 Megabita, kita dapat menggunakan perintah ini:

      Waktu

      Linux menyimpan data waktu tentang waktu akses, waktu modifikasi, dan waktu perubahan.

      • Waktu Akses: Terakhir kali berkas dibaca atau ditulis.

      • Waktu Modifikasi: Terakhir kali isi berkas dimodifikasi.

      • Waktu Perubahan: Terakhir kali metadata inode berkas diubah.

      Kita dapat menggunakannya dengan parameter -atime, -mtime, dan -ctime. Simbol plus dan minus dapat digunakan untuk menentukan lebih dari atau kurang dari, seperti yang kita lakukan dengan ukuran.

      Nilai parameter ini menentukan jumlah hari lampau yang ingin Anda cari.

      Untuk menemukan berkas yang memiliki waktu modifikasi sehari yang lalu, ketikkan:

      Jika kita ingin berkas yang diakses kurang dari sehari yang lalu, kita dapat mengetikkan:

      Untuk mendapatkan berkas dengan informasi meta yang diubah lebih dari 3 hari yang lalu, ketikkan:

      Ada juga beberapa parameter pendamping yang dapat kita gunakan untuk menentukan dalam menit, bukan dalam hari:

      Parameter ini akan memberikan berkas yang telah dimodifikasi di sistem dalam menit terakhir.

      Find juga dapat melakukan perbandingan terhadap berkas referensi dan menampilkan berkas yang lebih baru:

      Anda juga dapat mencari berkas menurut pemilik berkas atau pemilik grup.

      Anda melakukannya masing-masing dengan menggunakan parameter -user dan -group. Temukan berkas yang dimiliki oleh pengguna “syslog” dengan memasukkan:

      Demikian pula, kita dapat menentukan berkas yang dimiliki oleh grup “shadow” dengan mengetikkan:

      Kita juga dapat mencari berkas dengan izin tertentu.

      Jika kita ingin mencocokkan dengan seperangkat izin secara persis, kita gunakan bentuk ini:

      Perintah ini akan mencocokkan secara persis berkas dengan beberapa izin yang ditentukan.

      Jika ingin menentukan sesuatu setidaknya dengan izin itu, Anda dapat menggunakan bentuk ini:

      Bentuk ini akan mencocokkan berkas yang memiliki izin tambahan. Berkas dengan izin “744” akan cocok dengan instans ini.

      Untuk bagian ini, kita akan membuat struktur direktori dalam suatu direktori sementara. Isinya akan berupa tiga tingkat direktori, dengan sepuluh direktori di tingkat pertama.mprovemenimprovement. Setiap direktori (termasuk direktori sementara) akan berisi sepuluh berkas dan sepuluh subdirektori.

      Buatlah struktur ini dengan mengeluarkan perintah berikut:

      • cd
      • mkdir -p ~/test/level1dir{1..10}/level2dir{1..10}/level3dir{1..10}
      • touch ~/test/{file{1..10},level1dir{1..10}/{file{1..10},level2dir{1..10}/{file{1..10},level3dir{1..10}/file{1..10}}}}
      • cd ~/test

      Silakan periksa struktur direktori dengan ls dan cd untuk mengatur cara mengorganisirnya. Bila Anda selesai, kembalilah ke direktori pengujian:

      Kita akan membahas cara menghasilkan berkas tertentu dari struktur ini. Mari kita coba suatu contoh terlebih dahulu dengan mencari nama reguler untuk perbandingan:

      Output

      ./level1dir7/level2dir8/level3dir9/file1 ./level1dir7/level2dir8/level3dir3/file1 ./level1dir7/level2dir8/level3dir4/file1 ./level1dir7/level2dir8/level3dir1/file1 ./level1dir7/level2dir8/level3dir8/file1 ./level1dir7/level2dir8/level3dir7/file1 ./level1dir7/level2dir8/level3dir2/file1 ./level1dir7/level2dir8/level3dir6/file1 ./level1dir7/level2dir8/level3dir5/file1 ./level1dir7/level2dir8/file1 . . .

      Ada banyak hasilnya. Jika kita menyalurkan keluaran ke dalam penghitung, kita dapat melihat bahwa seluruhnya ada 1111 hasil:

      Output

      1111

      Hasil ini mungkin terlalu banyak untuk Anda gunakan dalam keadaan umum. Mari kita coba mempersempitnya.

      Anda dapat menentukan kedalaman maksimum pencarian di direktori pencarian tingkat teratas:

      • find -maxdepth num -name query

      Untuk menemukan direktori “file1” hanya dalam direktori “level1” ke atas, Anda dapat menentukan kedalaman maksimum sebesar 2 (1 untuk direktori tingkat teratas dan 1 untuk direktori level1):

      • find -maxdepth 2 -name file1

      Output

      ./level1dir7/file1 ./level1dir1/file1 ./level1dir3/file1 ./level1dir8/file1 ./level1dir6/file1 ./file1 ./level1dir2/file1 ./level1dir9/file1 ./level1dir4/file1 ./level1dir5/file1 ./level1dir10/file1

      Daftar itu menjadi jauh lebih mudah diatur.

      Anda juga dapat menentukan direktori minimum jika mengetahui bahwa semua berkas yang ada melewati titik tertentu dalam direktori saat ini:

      • find -mindepth num -name query

      Kita dapat menggunakan ini untuk menemukan berkas yang ada di akhir cabang direktori saja:

      • find -mindepth 4 -name file

      Output

      ./level1dir7/level2dir8/level3dir9/file1 ./level1dir7/level2dir8/level3dir3/file1 ./level1dir7/level2dir8/level3dir4/file1 ./level1dir7/level2dir8/level3dir1/file1 ./level1dir7/level2dir8/level3dir8/file1 ./level1dir7/level2dir8/level3dir7/file1 ./level1dir7/level2dir8/level3dir2/file1 . . .

      Sekali lagi, karena struktur direktori pencabangan, ini akan mengembalikan hasil yang sangat banyak (1000).

      Anda dapat mengombinasikan parameter kedalaman minimum dan maksimum untuk memfokuskan pada rentang yang sempit:

      • find -mindepth 2 -maxdepth 3 -name file

      Output

      ./level1dir7/level2dir8/file1 ./level1dir7/level2dir5/file1 ./level1dir7/level2dir7/file1 ./level1dir7/level2dir2/file1 ./level1dir7/level2dir10/file1 ./level1dir7/level2dir6/file1 ./level1dir7/level2dir3/file1 ./level1dir7/level2dir4/file1 ./level1dir7/file1 . . .

      Mengeksekusi dan Mengombinasikan Perintah Find

      Anda dapat mengeksekusi perintah pembantu arbiter atas segala sesuatu yang dianggap cocok menggunakan parameter -exec. Parameter itu dipanggil seperti ini:

      • find find_parameters -exec command_and_params {} ;

      {} digunakan sebagai penampung berkas yang dianggap cocok. ; digunakan agar mengetahui akhir perintah.

      Misalnya, kita dapat menemukan berkas di bagian sebelumnya yang memiliki 644 izin dan memodifikasinya agar memiliki 664 izin:

      • cd ~/test
      • find . -type f -perm 644 -exec chmod 664 {} ;

      Kita nanti dapat mengubah izin direktori seperti ini:

      • find . -type d -perm 755 -exec chmod 700 {} ;

      Jika ingin merangkai hasil yang berbeda, Anda dapat menggunakan perintah -and atau -or. -and dianggap ada jika tidak disertakan.

      • find . -name file1 -or -name file9

      Menemukan Berkas Menggunakan Locate

      Alternatif penggunaan find adalah perintah locate. Perintah ini sering kali lebih cepat dan dapat mencari ke seluruh sistem berkas dengan mudah.

      Anda dapat menginstal perintah di Debian atau Ubuntu dengan apt:

      Di CentOS, gunakan dnf sebagai gantinya:

      Alasan locate lebih cepat daripada find adalah karena mengandalkan basis data berkas di sistem berkas.

      Basis data biasanya diperbarui sekali sehari dengan skrip cron, tetapi Anda dapat memperbaruinya secara manual dengan mengetikkan:

      Jalankan perintah ini sekarang. Ingat, basis data harus selalu diperbarui jika Anda ingin menemukan berkas yang baru-baru ini diperoleh atau dibuat.

      Untuk menemukan berkas dengan locate, cukup gunakan sintaks ini:

      Anda dapat memfilter keluaran dalam beberapa cara.

      Misalnya, agar hanya mengembalikan berkas yang berisi kueri itu sendiri, bukan mengembalikan setiap berkas yang memiliki kueri dalam direktori yang mengarah ke sana, Anda dapat menggunakan -b untuk mencari “basename"saja:

      Agar locate hanya mengembalikan hasil yang masih ada di sistem berkas (yang belum dihapus di antara panggilan updatedb dan panggilan locate saat ini), gunakan bendera -e:

      Untuk melihat statistik tentang informasi yang dikatalogkan oleh locate, gunakan opsi -S:

      Output

      Database /var/lib/mlocate/mlocate.db: 3,315 directories 37,228 files 1,504,439 bytes in file names 594,851 bytes used to store database

      Kesimpulan

      Find dan locate adalah cara bagus untuk menemukan berkas di sistem Anda. Anda bebas memilih untuk menentukan alat yang sesuai dengan setiap situasi.

      Find dan locate adalah perintah berguna yang dapat diperkuat dengan mengombinasikannya dengan utilitas lain melalui berbagai saluran. Bereksperimenlah dengan melakukan filter menggunakan perintah seperti wc, sort, dan grep.



      Source link