Cómo manipular nombres de archivo que tienen espacios y caracteres especiales en Linux

Cómo manipular nombres de archivo que tienen espacios y caracteres especiales en Linux

Nos encontramos con nombres de archivos y carpetas con mucha frecuencia. En la mayoría de los casos, el nombre de archivo/carpeta está relacionado con el contenido del archivo/carpeta y comienza con un número y caracteres. Los nombres de archivo alfanuméricos son bastante comunes y muy utilizados, pero este no es el caso cuando tenemos que tratar con nombres de archivos/carpetas que tienen caracteres especiales.

Nota. Podemos tener archivos de cualquier tipo, pero por simplicidad y fácil implementación nos ocuparemos de un archivo de texto ( .txt. , a lo largo del artículo.

Ejemplos de nombres de archivos más comunes son:

abc.txt avi.txt debian.txt …

Ejemplos de nombres de archivos numéricos son:

121.txt 3221.txt 674659.txt …

Ejemplos de nombres de archivo alfanuméricos son:

eg84235.txt 3kf43nl2.txt 2323ddw.txt … freestar.config.enabled_slots. push (locationName: “tecmint_incontent”, slotId: “tecmint_incontent”);

Ejemplos de nombres de archivos que tienen caracteres especiales y no son muy comunes:

# 232.txt # bkf.txt # bjsd3469.txt # 121nkfd.txt-2232.txt-fbjdew.txt-gi32kj.txt–321.txt–bk34.txt …

Una de las preguntas más obvias aquí es-quién en la tierra crea/maneja archivos/El nombre de las carpetas tiene un hash (#), un punto y coma (;), un guión (-) o cualquier otro carácter especial.

Estoy de acuerdo con usted, que dichos nombres de archivos no son comunes. mal su shell no debería romperse/rendirse cuando tenga que lidiar con tales nombres de archivo. Hablando también técnicamente, todo, ya sea carpeta, controlador o cualquier otra cosa, se trata como un archivo en Linux.

Tratar con un archivo que tiene un guión (-) en su nombre

Cree un archivo que comienza con un guión (-), diga -abx.txt.

$ touch-abc.txt Salida de muestra toque: opción no válida-‘b’ Pruebe ‘toque–ayuda’ para más información.

La razón del error anterior, ese shell interpreta cualquier cosa después de un guión (-), como opción, y obviamente no existe tal opción, de ahí el error.

Para resolver dicho error, tenemos para decirle al shell Bash (sí, este y la mayoría de los otros ejemplos en el artículo son para BASH. que no interprete nada después del carácter especial (aquí guión), como opción.

Hay dos formas de resolver este error:

$ touch–abc.txt [Opción # 1. $ touch ./-abc.txt [Opción # 2.

Puede verificar el archivo así creado por las dos formas anteriores ejecutando los comandos ls o ls-l para una lista larga.

$ ls-l total 0-rw-r-r–1 avi avi 0 8 de junio 11:05 -abc.txt.

Para editar el archivo anterior, puede hacer:

$ nano–abc. txt o $ nano ./-abc.txt

Nota. puede reemplazar nano. con cualquier otro editor de su elección, diga vim. como:

$ vim–abc.txt o $ vim ./-abc.txt

De manera similar, para mover dicho archivo debe hacer:

$ mv–abc.txt-a.txt o $ mv–a. txt-abc.txt

y para Eliminar este archivo, debe hacer:

$ rm–abc.txt o $ rm ./-abc.txt

Si tiene muchos archivos en una carpeta cuyo nombre contiene un guión y desea eliminarlos todos a la vez, haga lo siguiente:

$ rm ./-* Nota importante:

1.. El Se sigue la misma regla que se discutió anteriormente para cualquier número de mensajes en el nombre del archivo y su ocurrencia. A saber, -abc.txt. ab-c.txt. abc-.txt. etc.

2.. Se sigue la misma regla que se mencionó anteriormente para el nombre de la carpeta que tiene cualquier número de hiperenlaces y su aparición, excepto el hecho de que para eliminar la carpeta debe usar ‘ rm-rf. ‘como:

$ rm-rf–abc o $ rm-rf ./-abc

Tratar con archivos que tienen HASH (#) en el nombre

El símbolo # tiene un significado muy diferente en BASH. Cualquier cosa después de un # se interpreta como un comentario y, por lo tanto, BASH lo descuida.

Comprenda usando ejemplos:

cree un archivo # abc.txt.

$ touch #abc. txt Salida de muestra touch: falta el operando del archivo Intente ‘touch–help’ para obtener más información.

La razón del error anterior, que Bash está interpretando # abc.txt. un comentario y, por lo tanto, lo ignora. Entonces, el comando touch se ha pasado sin ningún operando de archivo, y de ahí el error.

Para resolver dicho error, puede pedirle a BASH que no interprete #. como comentario.

$ touch ./#abc.txt o $ touch ‘# abc.txt’

y verifique el archivo recién creado como:

$ ls-l total 0-rw-r-r–1 avi avi 0 8 de junio 12:14 # abc.txt.

Ahora cree un archivo cuyo nombre contenga # en cualquier lugar excepto al principio.

$ touch ./a#bc.txt $ touch ./abc#.txt o $ touch ‘a # bc.txt’ $ touch ‘abc # .txt’

Ejecute ‘ ls-l. ‘para verificarlo:

$ ls-l total 0-rw-r-r–1 avi avi 0 8 de junio 12:16 a # bc.txt. rw-r-r–1 avi avi 0 8 de junio 12:16 abc # .txt.

¿Qué sucede cuando crea dos archivos (digamos a. y #bc. a la vez:

$ touch a.txt # bc.txt

Verifique el archivo que acaba de crear:

$ ls-l total 0-rw-r-r–1 avi avi 0 8 de junio 12:18 a.txt.

Obviamente por el ejemplo anterior, solo creó el archivo ‘ a. ‘y el archivo’ #bc. ‘se ha ignorado. Para ejecutar la situación anterior con éxito podemos hacerlo,

$ touch a.txt ./#bc.txt o $ touch a.txt ‘# bc.txt’

y verificarlo como:

$ ls-l total 0-rw-r-r–1 avi avi 0 8 de junio 12:20 a.txt. rw-r-r–1 avi avi 0 8 de junio 12:20 # bc.txt.

Puede mover el archivo como:

$ mv ./#bc.txt ./# cd.txt o $ mv ‘# bc.txt’ ‘# cd.txt’

Cópielo como:

$ cp ./#cd.txt ./#de.txt o $ cp ‘#cd .txt ” # de.txt ‘

Puede editarlo usando su elección de editor como:

$ vi ./#cd.txt o $ vi’ # cd.txt ‘$ nano ./# cd.txt o $ nano ‘# cd.txt’

Y elimínelo como:

$ rm ./#bc.txt o $ rm ‘# bc.txt’

Para eliminar todos los archivos que tiene hash ( #. en el nombre del archivo, puede usar:

# rm ./#*

Tratar con archivos que tienen punto y coma (;) en su nombre

En caso de que no lo sepa, el punto y coma actúa como un separador de comandos en BASH y quizás también en otro shell. El punto y coma le permite ejecutar varios comandos de una vez y actúa como separador. ¿Alguna vez ha tratado con algún nombre de archivo que tenga punto y coma? Si no está aquí, lo hará.

Cree un archivo con punto y coma.

$ touch; abc.txt Salida de muestra touch: operando de archivo faltante Pruebe ‘touch–help’ para obtener más información . bash: abc.txt: comando no encontrado

El motivo del error anterior, que cuando ejecuta el comando anterior, BASH interpreta touch. como un comando pero no pudo encontrar ningún operando de archivo antes del punto y coma y, por lo tanto, informa de error. También informa otro error que indica que el comando ‘ abc.txt. no se encuentra, solo porque después del punto y coma, BASH esperaba otro comando y ‘ abc.txt. , no es un comando.

Para resolver este error, dígale a BASH que no interprete el punto y coma como separador de comandos, como:

$ touch ./’;abc.txt ‘o $ touch’; abc.txt ‘

Nota. hemos incluido el nombre del archivo entre comillas simples ”. Le dice a BASH eso; es parte del nombre del archivo y no del separador de comandos.

El resto de la acción (es decir, copiar, mover, eliminar) en el archivo y la carpeta que tienen un punto y coma en su nombre se puede llevar a cabo directamente adjuntando el nombre entre comillas simples.

Tratar con otros caracteres especiales en el nombre del archivo/carpeta

Signo más (+) en el nombre del archivo

No requiere nada adicional, simplemente hágalo de manera normal, tan simple como el nombre de archivo que se muestra a continuación.

$ touch + 12.txt Signo de dólar ($) en el nombre del archivo

Debe encerrar el nombre del archivo entre comillas simples, como hicimos en el caso del punto y coma. El resto de las cosas son sencillas ..

$ touch ‘$ 12.txt’ Porcentaje (%) en el nombre del archivo

No necesita hacer nada diferente, trátelo como un archivo normal.

$ touch% 12.txt Asterisco (*) en el nombre del archivo

Tener Asterisk en el nombre del archivo no cambia nada y puede continuar usándolo como un archivo normal.

$ touch * 12.txt

Nota. cuando tenga que eliminar un archivo que comience con *, nunca use los siguientes comandos para eliminar dichos archivos.

$ rm * o $ rm-rf *

En su lugar use,

$ rm ./*.txt Signo de exclamación (!) en el nombre del archivo

Simplemente incluya el nombre del archivo entre comillas simples y el resto de las cosas son iguales.

$ touch ‘ ! 12.txt ‘At Sign (@) en el nombre del archivo

Nada adicional, trate un nombre de archivo que tenga At Sign como un archivo no normal.

$ touch’ @ 12.txt ‘^ en el nombre del archivo

No extra atención requerida. Utilice un archivo que tenga ^ en el nombre del archivo como archivo normal.

$ touch ^ 12.txt Ampersand (&) en el nombre del archivo

El nombre del archivo debe estar entre comillas simples y ya está listo para comenzar.

$ toque ‘& 12.txt’ Paréntesis () en el nombre del archivo

Si el nombre del archivo tiene paréntesis, debe encerrar el nombre del archivo con comillas simples.

$ touch ‘(12.txt)’ Llaves en el nombre del archivo

No se necesitan cuidados adicionales. Trátelo como un archivo más.

$ touch 12.txt Chevrones en el nombre del archivo

Un nombre de archivo que tenga Chevrones debe ir entre comillas simples.

$ touch ” Corchetes [] en el nombre del archivo

Trate el nombre del archivo que tiene corchetes como archivos normales y no necesita cuidarlo más.

$ touch [12.txt] Debajo de la puntuación (_) en el nombre del archivo

Son muy común y no requiere nada adicional. Simplemente haga lo que hubiera hecho con un archivo normal.

$ touch _12.txt Igual a (=) en Nombre de archivo

Tener un signo igual a no cambia nada, puede usarlo como archivo normal.

$ touch = 12.txt Manejo de la barra invertida (\)

La barra invertida le dice a shell que ignore el siguiente carácter. Debe incluir el nombre del archivo entre comillas simples, como hicimos en el caso del punto y coma. El resto de las cosas son sencillas.

$ touch ‘.txt’ El caso especial de barra inclinada

No puede crear un archivo cuyo nombre incluya una barra inclinada (/), hasta que su sistema de archivos tenga un error. No hay forma de escapar de una barra inclinada.

Entonces, si puede crear un archivo como ‘/12.txt’. o ‘b/c.txt’. entonces su sistema de archivos tiene bug o tiene soporte Unicode, lo que le permite crear un archivo con barra inclinada. En este caso, la barra inclinada no es una barra inclinada real, sino un carácter Unicode que se parece a una barra inclinada.

Signo de interrogación (?) En el nombre del archivo

De nuevo, un ejemplo en el que no es necesario poner cualquier intento especial. Un nombre de archivo que tenga un signo de interrogación se puede tratar de la forma más general.

$ touch? 12.txt Marca de punto (.) en el nombre del archivo

Los archivos que comienzan con punto (.) son muy especiales en Linux y se denominan archivos de puntos. Son archivos ocultos generalmente una configuración o archivos del sistema. Debe usar el interruptor “-a. o “-A. con comando ls. para ver dichos archivos.

Crear, editar, renombrar y eliminar dichos archivos es sencillo.

$ touch .12.txt

Nota. En Linux puede tener tantos puntos (.) como necesite en un nombre de archivo. A diferencia de otros puntos del sistema en el nombre del archivo, no significa separar el nombre y la extensión. Puede crear un archivo con varios puntos como:

$ touch 1.2.3.4.5.6.7.8.9.10.txt

y marcarlo como:

$ ls-l total 0-rw-r–r–1 avi avi 0 8 de junio 14:32 1.2.3.4.5.6.7.8.9.10.txt. Coma (,) en el nombre del archivo

Puede tiene una coma en un nombre de archivo, tantos como desee y no requiere nada adicional. Simplemente hágalo de manera normal, como un simple nombre de archivo.

$ touch, 12.txt o $ touch, 12, .txt Dos puntos (:) en Nombre de archivo

Puede tener dos puntos en un nombre de archivo, tantos como desee y no requiere nada adicional . Simplemente hágalo de manera normal, como un simple nombre de archivo.

$ touch: 12.txt o $ touch: 12: .txt Tener comillas (simples y dobles) en el nombre del archivo

Para tener comillas en el nombre del archivo, tenemos que usar la regla de intercambio. Es decir, si necesita tener comillas simples en el nombre del archivo, incluya el nombre del archivo con comillas dobles y si necesita tener comillas dobles en el nombre del archivo, escríbalo con comillas simples.

$ touch “15′.txt” y $ touch ’15 ”.txt ‘Tilde (~) en el nombre del archivo

Algunos editores en Linux como emacs. crean un archivo de respaldo del archivo que se está editando. El archivo de respaldo tiene el nombre del archivo original más una tilde al final del nombre del archivo. Puede tener un archivo cuyo nombre incluya tilde, en cualquier ubicación simplemente como:

$ touch ~ 1a.txt o $ touch 2b ~ .txt Espacio en blanco en el nombre del archivo

Cree un archivo cuyo nombre tiene espacio entre carácter/palabra, diga “ hola, mi nombre es avishek.txt. .

No es una buena idea tener el nombre del archivo con espacios y si tiene que diferenciar nombre legible, debe usar, subrayado o guión. Sin embargo, si tiene que crear un archivo de este tipo, debe usar una barra inclinada hacia atrás que ignora el siguiente carácter. Para crear el archivo anterior tenemos que hacerlo de esta manera ..

$ touch hola \ mi \ nombre \ es \ avishek.txt hola mi nombre es avishek.txt.

He intentado cubrir todos los escenarios con los que te puedes encontrar. La mayor parte de la implementación anterior es explícitamente para BASH Shell y es posible que no funcione en otro shell.

Si cree que me perdí algo (que es muy común y de naturaleza humana), puede incluir su sugerencia en los comentarios a continuación. Mantente conectado, sigue comentando. ¡Estén atentos y conectados! ¡Me gusta y comparte con nosotros y ayúdanos a difundir!