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

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

Nos encontramos con los archivos y las carpetas Nombre muy regularmente. En la mayoría de los casos, el nombre del archivo/carpeta está relacionado con el contenido del archivo/carpeta y comienza con el número y los caracteres. El nombre de archivo alfa-numérico es bastante común y muy ampliamente utilizado, pero este no es el caso cuando tenemos que lidiar con el nombre de archivo/carpeta que tiene caracteres especiales en ellos.

Nota: Podemos tener archivos de cualquier tipo, pero para simplicidad e implementación fácil, trataremos con el archivo de texto (.TXT), a lo largo del artículo.

El ejemplo de los nombres de archivo más comunes son:

a B C.txt avi.txt Debian.TXT… 

Ejemplo de nombres de archivos numéricos son:

121.txt 3221.txt 674659.TXT… 

El ejemplo de los nombres de archivos alfa-numéricos son:

EG84235.txt 3KF43NL2.txt 2323ddw.TXT… 

Ejemplos de nombres de archivos que tienen carácter especial y no es muy común:

#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/trata con el nombre de archivos/carpetas que tiene un hash? (#), un semi-colon (;), un guión (-) o cualquier otro personaje especial.

Estoy de acuerdo con usted, que dichos nombres de archivos no son comunes que su shell no debe romperse/darse por vencido cuando tiene que lidiar con dichos nombres de archivo. También hablar técnicamente, cada cosa, ya sea carpeta, controlador o cualquier otra cosa, se trata como archivo en Linux.

Tratar con el archivo que tiene DASH (-) en su nombre

Crear un archivo que comience con un tablero (-), decir -abx.TXT.

$ touch -abc.TXT 
Salida de muestra
Toque: Opción no válida -'B' Prueba 'Toque -Help' para obtener más información. 

La razón del error anterior, ese shell interpreta cualquier cosa después de un tablero (-), Como opción, y obviamente no existe tal opción, por lo tanto, el error es el error.

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

Hay dos formas de resolver este error como:

$ touch --abc.txt [opción #1] $ touch ./-a B C.txt [opción #2] 

Puede verificar el archivo así creado por las dos formas anteriores ejecutando comandos LS o LS -L para un listado largo.

$ LS -L Total 0 -RW-R-R-- 1 AVI AVI 0 Jun 8 11:05 -a B C.TXT 

Para editar el archivo anterior que puede hacer:

$ nano --abc.txt o $ nano ./-a B C.TXT 

Nota: Puede reemplazar nano Con cualquier otro editor de su elección, diga empuje como:

$ vim --abc.txt o $ vim ./-a B C.TXT 

Del mismo modo para mover dicho archivo que 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 ./-a B C.TXT 

Si tiene muchos archivos en una carpeta, cuyo nombre contiene Dash, y desea eliminarlos todos a la vez, haga como:

$ RM ./-* 
Importante tener en cuenta:

1. La misma regla que se discutió anteriormente sigue cualquier número de hipen en nombre del archivo y su ocurrencia. Verbigracia., -a B C.TXT, a B C.TXT, a B C-.TXT, etc.

2. La misma regla que se discutió anteriormente sigue el nombre de la carpeta que tiene cualquier número de hipen y su ocurrencia, excepto el hecho de que para eliminar la carpeta que tiene que usar 'RM -RF' como:

$ rm -rf --abc o $ rm -rf ./-a B C 

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

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

Compruébalo usando ejemplos:

crear un archivo #a B C.TXT.

$ touch #abc.TXT 
Salida de muestra
Toque: faltando operando de archivo intente 'touch --help' para obtener más información. 

La razón del error anterior, que Bash está interpretando #a B C.TXT un comentario y, por lo tanto, ignorando. Entonces, el toque de comando se ha pasado sin ningún operando de archivo, y por lo tanto es el error.

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

$ touch ./#a B C.txt o $ touch '#ABC.TXT' 

y verifique el archivo que acaba de crear como:

$ LS -L Total 0 -RW-R-R-- 1 AVI AVI 0 Jun 8 12:14 #a B C.TXT 

Ahora crea un archivo cuyo nombre contiene # en cualquier lugar excepto en la mendicidad.

$ touch ./a B C.txt $ touch ./a B C#.txt o $ touch 'a#bc.txt '$ touch' ABC#.TXT' 

Correr 'LS -L'Para verificarlo:

$ LS -L Total 0 -RW-R-R-- 1 AVI AVI 0 Jun 8 12:16 a B C.TXT -RW-R-R-- 1 AVI AVI 0 JUN 8 12:16 a B C#.TXT 

¿Qué sucede cuando crea dos archivos (digamos? a y #antes de Cristo) En seguida:

$ touch a.txt #BC.TXT 

Verifique el archivo que acaba de crear:

$ LS -L Total 0 -RW-R-R-- 1 AVI AVI 0 Jun 8 12:18 a.TXT 

Obvio del ejemplo anterior solo creó un archivo 'a'y archivo'#antes de Cristo'Ha sido ignorado. Para ejecutar la situación anterior con éxito podemos hacer,

$ touch a.TXT ./#antes de Cristo.txt o $ touch a.txt '#bc.TXT' 

y verifíquelo como:

$ ls -l total 0 -rw-r-r-- 1 avi avi 0 junio 8 12:20 a.TXT -RW-R-R-- 1 AVI AVI 0 JUN 8 12:20 #antes de Cristo.TXT 

Puede mover el archivo como:

$ MV ./#antes de Cristo.TXT ./#cd.txt o $ mv '#bc.txt "#cd.TXT' 

Copielo como:

$ CP ./#cd.TXT ./#Delaware.txt o $ cp '#cd.txt "#de.TXT' 

Puede editarlo como utilizando su elección de editor como:

$ VI ./#cd.txt o $ vi '#cd.TXT' 
$ nano ./#cd.txt o $ nano '#cd.TXT' 

Y eliminarlo como:

$ RM ./#antes de Cristo.txt o $ rm '#bc.TXT' 

Para eliminar todos los archivos que tienen hash (#) En el nombre del archivo, puede usar:

 # RM ./#* 

Tratar con archivos que tienen semicolon (;) en su nombre

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

Crear un archivo que tenga semi-colon en él.

$ touch; ABC.TXT 
Salida de muestra
Toque: faltando operando de archivo intente 'touch --help' para obtener más información. Bash: ABC.txt: comando no encontrado 

El motivo del error anterior, que cuando ejecuta el comando de la base de comando tocar Como comando, pero no pudo encontrar ningún operando de archivo antes de la semicolon y, por lo tanto, informa el error. También informa otro error que 'a B C.TXT'Comando no encontrado, solo porque después de Semicolon Bash esperaba otro comando y'a B C.TXT', no es un comando.

Para resolver dicho error, dígale a Bash que no interprete a Semicolon como separador de comandos, como:

$ touch ./';a B C.txt 'o $ touch'; ABC.TXT' 

Nota: Hemos adjunto el nombre del archivo con una sola cotización ". Le dice a Bash que ; es una parte del nombre del archivo y no el separador de comandos.

Resto de la acción (a saber., Copiar, mover, eliminar) en el archivo y la carpeta que tiene una semicolon en su nombre se puede llevar a cabo directamente encerrando el nombre en una sola cotización.

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

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

No requiere nada más, solo hágalo de manera normal, como el simple nombre de archivo como se muestra a continuación.

$ touch +12.TXT 

Señal de dólar ($) en el nombre del archivo

Debe encerrar el nombre del archivo en una sola cita, como lo hicimos en el caso de Semicolon. El resto de las cosas son sencillos ..

$ touch '$ 12.TXT' 

Porcentaje (%) en el nombre del archivo

No necesita hacer nada diferente, tratarlo como un archivo normal.

$ touch %12.TXT 

Asterisco (*) en el nombre del archivo

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

$ touch *12.TXT 

Nota: Cuando tiene 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 encierre el nombre del archivo en una sola cita y el resto de las cosas son las mismas.

$ touch '!12.TXT' 

En el signo (@) en el nombre del archivo

Nada extra, trate un nombre de archivo que tiene en el signo como archivo no RMAL.

$ touch '@12.TXT' 

^ En el nombre del archivo

No se requiere atención adicional. Use un archivo que tenga ^ en el nombre de archivo como archivo normal.

$ touch ^12.TXT 

Amperandand (&) en el nombre del archivo

El nombre de archivo debe estar encerrado en cotizaciones individuales y está listo para comenzar.

$ touch 'y 12.TXT' 

Parentheses () en el nombre del archivo

Si el nombre del archivo tiene paréntesis, debe encerrar el nombre de archivo con cotizaciones individuales.

$ touch '(12.TXT)' 

Aparatos en el nombre del archivo

No se necesita más cuidado. Solo trátelo como otro archivo.

$ touch 12.TXT 

Chevrons en el nombre del archivo

Un nombre de archivo que tiene chevrons debe estar encerrado en comillas individuales.

$ touch '' 

Brackets cuadrados [] en el nombre del archivo

Trate el nombre del archivo que tiene soportes cuadrados como archivos normales y no necesita cuidarlo adicional.

$ touch [12.TXT] 

Bajo puntaje (_) en el nombre del archivo

Son muy comunes y no requieren nada extra. Solo haz lo que hubiera hecho con un archivo normal.

$ touch _12.TXT 

Igual a (=) en el nombre del archivo

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

$ touch = 12.TXT 

Lidiar con Back Slash (\)

Backshash le dice a Shell que ignore el siguiente personaje. Debe encerrar el nombre del archivo en una sola cita, como lo hicimos en el caso de Semicolon. El resto de las cosas son sencillos.

$ touch '.TXT' 

El caso especial de la barra delantera

No puede crear un archivo cuyo nombre incluya una barra de reenvío (/), Hasta que su sistema de archivos tenga error. No hay forma de escapar de un corte hacia adelante.

Entonces, si puede crear un archivo como '/12.TXT' o 'antes de Cristo.TXT' entonces su sistema de archivos tiene un error o tiene soporte de unicode, que le permite crear un archivo con barra de reenvío. En este caso, la barra delantera no es una barra de avance real, sino un personaje unicode que se parece a un corte hacia adelante.

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

Una vez más, un ejemplo en el que no necesita poner ningún intento especial. Un nombre de archivo que tiene un signo de interrogación puede tratarse de la manera más general.

$ touch ?12.TXT 

Punto de punto (.) en el nombre del archivo

Los archivos que comienzan con DOT (.) son muy especiales en Linux y se llaman archivos DOT. Son archivos ocultos generalmente una configuración o archivos del sistema. Tienes que usar switch '-a' o '-A' con comando ls Para ver tales archivos.

Crear, editar, renombrar y eliminar dichos archivos son sencillos.

$ touch .12.TXT 

Nota: En Linux puede tener tantos puntos (.) Como necesita 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 que tenga múltiples puntos como:

$ touch 1.2.3.4.5.6.7.8.9.10.TXT 

y verifíquelo como:

$ LS -L Total 0 -RW-R-R-- 1 AVI AVI 0 Jun 8 14:32 1.2.3.4.5.6.7.8.9.10.TXT 

Coma (,) en el nombre del archivo

Puede tener coma en un nombre de archivo, tantos como desee y no requiere nada más. Solo hazlo de manera normal, como nombre de archivo simple.

$ touch, 12.txt o $ touch, 12,.TXT 

Colon (:) en el nombre del archivo

Puede tener colon en un nombre de archivo, tantos como desee y no requiere nada más. Solo hazlo de manera normal, como nombre de archivo simple.

$ touch: 12.txt o $ touch: 12:.TXT 

Tener cotizaciones (individuales y dobles) en el nombre del archivo

Para tener cotizaciones en el nombre del archivo, tenemos que usar la regla de intercambio. I.E, si necesita tener una cotización única en el nombre del archivo, adjunte el nombre del archivo con cotizaciones dobles y si necesita tener una cita doble en el nombre del archivo, adjuntarlo con una sola cotización.

$ touch "15 '.txt "y $ touch '15".TXT' 

Tilde (~) en el nombre del archivo

Algunos editores en Linux como emacs Cree un archivo de copia de seguridad del archivo que se está editando. El archivo de copia de seguridad tiene el nombre del archivo original más un Tilde al final del nombre del archivo. Puede tener un archivo de ese nombre que incluye 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 tenga espacio entre carácter/palabra, digamos "hola mi nombre es avishek.TXT".

No es una buena idea tener el nombre de archivo con espacios y si tiene que ver el nombre legible distinto, debe usar, subrayar o guión. Sin embargo, si tiene que crear un archivo de este tipo, debe usar la corte hacia atrás que ignora el siguiente personaje. Para crear el archivo anterior tenemos que hacerlo de esta manera ..

$ touch hola \ my \ name \ is \ AVishek.TXT hola mi nombre es avishek.TXT 

He intentado cubrir todo el escenario que puedas encontrar. La mayor parte de la implementación anterior es explícitamente para bash shell y puede no funcionar en otro shell.

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