GNU/Linux >> Tutoriales Linux >  >> Linux

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

Como ya sabrá, 'cp' es el programa de línea de comandos en Linux para copiar archivos y directorios. El uso simple y más común de 'cp' es el siguiente:

$ cp file1 file2 file3... fileN target_folder/

Tenga en cuenta que el comando anterior funciona tanto para archivos como para 'vacío' carpetas No funciona para carpetas que tienen algún contenido, ya sea archivos o subcarpetas.

Para copiar dichas carpetas, podemos especificar el '-r' (recursiva) bandera.

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

La copia recursiva implica que se copia toda la estructura de carpetas debajo de una carpeta, es decir, las subcarpetas y los archivos en ellas, las subcarpetas dentro de las subcarpetas y los archivos en ellas, etc.

Esto copia todos los archivos, y no hay manera dentro del ‘cp’ Comando para excluir algunos de los archivos en función de ciertos parámetros. Por ejemplo, es posible que los usuarios deseen copiar todos los archivos de forma recursiva, excepto los archivos MP3 (audio) en las subcarpetas hasta el final de la jerarquía.

Buscar todos los archivos excepto cierta extensión de archivo

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

Del mismo modo, hay formas de buscar archivos especificando qué archivos deben excluirse en el comando de búsqueda . La sintaxis para localizar archivos de una extensión específica usando buscar es:

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

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

$ find . -name "*.mp3"

Ahora, para encontrar todos los archivos en las carpetas y subcarpetas, excepto los archivos MP3, use la ‘negación’ operador de buscar :

$ find . ! -name "*.mp3"

Podemos ver que ahora se muestra todo excepto los archivos MP3. Sin embargo, solo queremos mostrar los archivos, porque esta salida se ingresará más tarde en 'cp' . En este momento, muestra archivos y carpetas (p. ej., ‘temp1/’ ), lo que dará lugar a copias repetitivas de los mismos archivos.

Para eliminar las carpetas de la salida, simplemente use el argumento '-type f' . Aquí 'f' significa un archivo.

$ find . ! -name '*.mp3' -type f

Por lo tanto, ahora solo tenemos los archivos obtenidos recursivamente dentro de la carpeta ‘test’ . Ahora podemos proceder a canalizar esta salida al comando 'cp' .

Excluir extensión de archivo específica al copiar archivos de forma recursiva

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

$ find <folder_to_search> ! -name '*.<extension>' -type f | xargs cp -t <target_directory>

Comando real.

$ find . ! -name '*.mp3' -type f | xargs cp -t Misc/

Así, todos los archivos encontrados recursivamente, excepto el “.mp3” los archivos se han copiado en la carpeta “Misc” .

Conclusión

En este artículo, aprendimos cómo copiar archivos recursivamente en Linux mientras excluíamos archivos de cierta extensión. Además, eche un vistazo a cómo copiar recursivamente archivos de una extensión específica.

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


Linux
  1. ¿Cómo copiar archivos recursivamente por extensión de archivo?

  2. ¿Cómo ocultar archivos con una extensión específica?

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

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

  5. ¿Cómo se eliminan archivos anteriores a la fecha específica en Linux?

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

Cómo excluir un directorio al buscar archivos en Linux

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

Cómo encontrar archivos basados ​​en la marca de tiempo en Linux

Cómo encontrar archivos que contengan una cadena de texto específica en Linux

Cómo encontrar archivos modificados en las últimas 24 horas en Linux