¿Cómo puedo usar "Buscar" en un script Shell para buscar desde el directorio actual? -- directory campo con scripts campo con find camp askubuntu Relacionados El problema

How can I use “find” in a shell script to search from the current directory?


1
vote

problema

Español

Quiero que el programa se vea así:

  read a if[ find . name $a ]; then   echo "You found the file" else "You haven t found the file" fi   
Original en ingles

I want the program to look like this :

read a if[ find . name $a ]; then   echo "You found the file" else "You haven t found the file" fi 
        
         
         

Lista de respuestas

5
 
vote
vote
La mejor respuesta
 

Si se encontró nada o no, find siempre devuelve verdadero. Puede usar grep para determinar si find encontró algo:

  read -r a if find . -maxdepth 1 -name "$a" -print -quit | grep -q .  then   echo "You found the file" else    echo "You haven't found the file" fi   

Dejar de fumar después de la primera coincidencia ( # Replace 4.13.30-generic to whatever your version is, find it with: # uname -r cd /lib/modules/4.13.30-generic/kernel/drivers/net/wireless/realtek sudo mkdir 8192eu sudo cp ~/my-dir-where-i-compiled/8192eu.ko 8192eu 0 ) debe mejorar el rendimiento, como ha señalado Eliah. Use ABCDEFGHIJKLMNABCDEFGHIJKLMN11 para limitar los resultados al directorio actual, pero luego # Replace 4.13.30-generic to whatever your version is, find it with: # uname -r cd /lib/modules/4.13.30-generic/kernel/drivers/net/wireless/realtek sudo mkdir 8192eu sudo cp ~/my-dir-where-i-compiled/8192eu.ko 8192eu 2 está exagerando para esto.

 

Whether or not anything was found, find always returns true. You can use grep to determine if find found something:

read -r a if find . -maxdepth 1 -name "$a" -print -quit | grep -q .  then   echo "You found the file" else    echo "You haven't found the file" fi 

Quitting after the first match (-print -quit) should improve performance, as Eliah has noted. Use -maxdepth 1 to limit results to the current directory - but then find is overkill for this.

 
 
       
       
2
 
vote

Si no lo hagan para usar el comando # Replace 4.13.30-generic to whatever your version is, find it with: # uname -r cd /lib/modules/4.13.30-generic/kernel/drivers/net/wireless/realtek sudo mkdir 8192eu sudo cp ~/my-dir-where-i-compiled/8192eu.ko 8192eu 3 , use el comando # Replace 4.13.30-generic to whatever your version is, find it with: # uname -r cd /lib/modules/4.13.30-generic/kernel/drivers/net/wireless/realtek sudo mkdir 8192eu sudo cp ~/my-dir-where-i-compiled/8192eu.ko 8192eu 4 (o su forma corta # Replace 4.13.30-generic to whatever your version is, find it with: # uname -r cd /lib/modules/4.13.30-generic/kernel/drivers/net/wireless/realtek sudo mkdir 8192eu sudo cp ~/my-dir-where-i-compiled/8192eu.ko 8192eu 5 ... # Replace 4.13.30-generic to whatever your version is, find it with: # uname -r cd /lib/modules/4.13.30-generic/kernel/drivers/net/wireless/realtek sudo mkdir 8192eu sudo cp ~/my-dir-where-i-compiled/8192eu.ko 8192eu 6 ) sería más fácil, IMHO. Con ABCDEFGHIJKLMNABCDEFGHIJKLMN17 , EL ABCDEFGHIJKLMNABCDEFGHIJKLMN18 Switch hace lo que está buscando.

  # Replace 4.13.30-generic to whatever your version is, find it with: # uname -r  cd /lib/modules/4.13.30-generic/kernel/drivers/net/wireless/realtek sudo mkdir 8192eu sudo cp ~/my-dir-where-i-compiled/8192eu.ko 8192eu   9  

Pero tenga en cuenta que ABCDEFGHIJKLMNABCDEFGHIJKLMN20 busca el archivo en el directorio actual, no en ningún subdirectorio (gracias a Eliahkagan para el recordatorio).

Puede encontrar una buena vista general sobre sudo modprobe -r rtl8xxxu sudo modprobe 8192eu 1 en la piratas informáticos de bash wiki

 

If don't have to use the find command, using the test command (or its short form [...]) would be easier, IMHO. With test, the e switch does what you're looking for.

#!/bin/bash read -r a if [[ -e $a ]]; then     echo "You found the file" else     echo "You haven't found the file" fi 

But be aware that test only looks for the file in the current directory, not in any subdirectories (thanks to EliahKagan for the reminder).

You can find a good overview about test at the Bash Hackers Wiki

 
 
       
       

Relacionados problema

9  Solicitar líneas de 'Acceso denegado "  ( Taking out access denied lines ) 
Cuando utilizo find para ver todos los archivos PDF en el directorio /home , estoy viendo access denied . Para eliminarlos, lo intenté: find /home -ina...

1  Obtener la utilización del disco por tipo de archivo?  ( Get disk utilization by file type ) 
¿Hay una manera de obtener una ruptura de una utilización de un disco (o directorio) según el tipo de archivo desde la línea de comandos? Supongo que podría...

12  ¿Cómo puedo encontrar todos los archivos de video en mi sistema?  ( How can i find all video files on my system ) 
Intenté usar la búsqueda de archivos de Lens de Unity para *.* y filtrado por las últimas modificadas = todos, escriban = videos, y tamaño = todos menos que...

2  ¿Puede ser mayor de un directorio ser mayor que el del archivo dentro?  ( Can a directorys mtime be older than that of file inside ) 
Tengo esta pregunta muy tonta y muy básica, pero pensé que es mejor preguntar antes de comenzar a podar mi NAS. Quiero eliminar todos los directorios en los...

32  ¿Cómo encontrar archivos entre dos fechas usando "Buscar"?  ( How to find files between two dates using find ) 
Tengo una cuenta de correo electrónico que ha pasado 60 GB de correos electrónicos, y actualmente estoy teniendo muchos problemas para usar un cliente de corr...

34  encontrar vs. localizar  ( Find vs locate ) 
Hay los comandos find y abcdefhijklmnabcdefghijklmn1 Para buscar archivos en el disco. Sé que ABCDEFGHIJKLMNABCDEFGHIJKLMN2 procesa recursivamente tod...

44  Encuentra el último archivo por fecha modificada  ( Find the latest file by modified date ) 
Si quiero encontrar el último archivo (METIMENTO) en un directorio (grande) que contiene subdirectorios, ¿cómo lo haría? Muchos puestos que he encontrado ...

1  Bash: archivo no encontrado  ( Bash file not found ) 
Todo está en la captura de pantalla a continuación ...

1  Utilicé el comando Buscar sin especificar un directorio  ( I used the find command without specifying a directory ) 
Usé este comando sin especificar un directorio: ABCDEFGHIJKLMNABCDEFGHIJKLMN5 ¿Qué podría haber ocurrido? Estaba en la carpeta / var / www / html. ¿Camb...

1  Creación de un directorio de archivos creados recientemente  ( Creating a directory of recently created files ) 
En un sistema que tengo, los archivos se cargan a través de una serie de varios mecanismos en un directorio central "entrante". Una vez al día, esos archivos ...




© 2022 respuesta.top Reservados todos los derechos. Centro de preguntas y respuestas reservados todos los derechos