GNU/Linux >> Tutoriales Linux >  >> Linux

Cómo copiar archivos con una extensión de archivo específica recursivamente

En Linux, el comando 'cp ', qué estándares para 'Copiar ‘ se utiliza para copiar archivos y carpetas a otra carpeta. Está disponible por defecto en Linux como parte de GNU Coreutils conjunto de herramientas.

El uso más básico del comando cp es especificar los archivos que se copiarán como argumentos y especificar la carpeta de destino como último argumento.

$ cp file1 file2 file3... fileN target_folder/

Copiar archivos con extensiones de archivo específicas

Incluso puede copiar archivos de la misma extensión de archivo (por ejemplo, .txt , .jpg , .mp4 ) juntos usando caracteres comodín, como se muestra a continuación:

$ cp *.jpg *.mp4 *.mp3 media/

Esto copiará todos los JPEG imágenes, MP3, y MP4 archivos multimedia a la carpeta 'media '. Tenga en cuenta que esto solo se puede usar para archivos. Si intenta copiar carpetas en el formato anterior, muestra una advertencia de que la carpeta está "No vacía ‘.

Para copiar carpetas, tenemos que especificar el '-r' (recursivo ) bandera. Recursivo significa que se copiarán todos los archivos de esa carpeta, los archivos de las subcarpetas, etc.

$ cp -r folder1/ folder2/ file1 file2 target_folder/

Sin embargo, no hay forma dentro de 'cp' para copiar archivos de una extensión específica recursivamente. Siempre que '-r' se especifica, el programa siempre considera todos los archivos en las subcarpetas para copiar.

Buscar y copiar archivos con extensión de archivo

Para lograr esto, usamos el comando find, que simplemente se usa para buscar archivos y carpetas en Linux en función de los parámetros del archivo o carpeta:nombre de archivo, extensión, tamaño, etc.

Haremos uso del comando de búsqueda para ubicar recursivamente archivos con una extensión de archivo específica y luego pasar esta salida a cp comando para copiarlos.

Sintaxis para localizar archivos de una extensión específica usando comando de búsqueda es:

$ find <folder_to_search> -name ‘*.<extension>

Por ejemplo, para localizar todos los archivos JPG de forma recursiva en la carpeta actual:

$ find . -name '*.jpg'

Finalmente, tenemos que canalizar esta salida al comando cp . Para hacer esto, usamos los ‘xargs’ comando para hacer 'cp' considere la salida de ‘find’ como sus argumentos. Además, usamos el '-t' bandera de cp , para especificar el directorio de destino, sin el cual el programa considera la salida de ‘buscar’ como el directorio de destino.

$ find . -name '*.jpg' | xargs cp -t Pictures2/

Así, todos los archivos de la extensión '.jpg' se han copiado en la carpeta ‘Pictures2’ .

Conclusión

En este artículo, aprendimos cómo copiar archivos con una extensión específica de forma recursiva en Linux. Tenga en cuenta que este método es útil si está tratando con una cantidad menor de archivos. Para una gran cantidad de archivos (por ejemplo, en decenas de miles), debe usar un enfoque diferente para copiar los archivos de forma recursiva.

Si tiene alguna pregunta o comentario, háganoslo saber en los comentarios a continuación.


Linux
  1. ¿Cómo usar Inotifywait para ver un directorio para la creación de archivos de una extensión específica?

  2. Cómo encontrar todos los archivos con tamaño de archivo cero (0) bytes en un directorio recursivamente

  3. Cómo copiar directorios recursivamente usando rsync mientras se excluyen archivos específicos

  4. Encuentra recursivamente archivos con una extensión específica

  5. ¿Cómo copiar un archivo transaccionalmente?

Cómo copiar archivos y directorios en Linux

Cómo tar tipos de archivos específicos (extensiones) en un directorio

Cómo eliminar archivos con extensión específica en Linux

Cómo excluir una extensión de archivo específica al copiar archivos de forma recursiva

Cómo copiar archivos y directorios en la terminal de Linux

¿Cómo agregar una opción para crear un nuevo archivo con una extensión específica en el menú contextual?