¿Puedes mostrar los resultados de ls -lapor favor?
ryekayo
2
Mejor aún, ls -lb(o ls -lab, si el nombre comienza con .).
G-Man dice 'Reincorporar a Monica' el
1
Además, ¿qué pasó exactamente? ¿Descargó dir1/fooy dir2/fooen la máquina X, luego scplos editó dir42en la máquina Y, y salieron como archivos separados con el mismo nombre? ¿O descargó dos archivos con el mismo nombre en el mismo directorio (en la máquina X), y salieron como archivos separados con el mismo nombre?
Ligeramente mejor. El carácter de espacio se marca como \ (aunque no todas las lsimplementaciones lo hacen).
$ LC_ALL=C ls -1b
Ste\314\201phane
St\303\251phane
St\303\251phane\
St\342\200\213\303\251phane
Ahora estamos hablando (todos los caracteres no ASCII se representan como el valor octal de sus constituyentes de bytes)
También podría hacerlo, y eso funciona para cualquier entrada:
$ ls | LC_ALL=C sed -n l
Ste\314\201phane$
St\303\251phane$
St\342\200\213\303\251phane$
St\303\251phane $
Aquí, el final de las líneas está marcado con lo $que hace que sea más fácil detectar el espacio final. Sin embargo, eso no ayudará a detectar un archivo llamadoStéphane<newline>Stéphane
$ ls | perl -Mopen=locale -MUnicode::UCD=charinfo -lpe '
s/[^\41-\177]/"<".charinfo(ord$&)->{name}.">"/ge'
Ste<COMBINING ACUTE ACCENT>phane
St<LATIN SMALL LETTER E WITH ACUTE>phane
St<ZERO WIDTH SPACE><LATIN SMALL LETTER E WITH ACUTE>phane
St<LATIN SMALL LETTER E WITH ACUTE>phane<SPACE>
Si no le importa que le pregunte a Stephane, ¿qué hace el comando canalizado LC_ALL=C sed -n 1?
ryekayo
3
sedEl lcomando muestra la entrada en forma visualmente inequívoca. Con LC_ALL = C, nos aseguramos de que solo use caracteres ASCII para eso (aunque al menos con GNU sed, no es necesario).
Stéphane Chazelas
2
@ StéphaneChazelas También puede usar:LC_ALL=C ls -b
vinc17
@ vinc17, buen punto, eso también es mejor que sed para detectar archivos con caracteres de nueva línea, pero no siempre para detectar el espacio final. Lo he agregado a la respuesta.
Stéphane Chazelas
Maldición, TIL que puede tener espacios al final del nombre de un archivo y parece que hay dos archivos de nombres idénticos en el sistema de archivos. Gran respuesta, ls | LC_ALL=C sed -n lrealmente fue un gran ahorro de tiempo en este momento, ¡gracias!
ls -la
por favor?ls -lb
(ols -lab
, si el nombre comienza con.
).dir1/foo
ydir2/foo
en la máquina X, luegoscp
los editódir42
en la máquina Y, y salieron como archivos separados con el mismo nombre? ¿O descargó dos archivos con el mismo nombre en el mismo directorio (en la máquina X), y salieron como archivos separados con el mismo nombre?Respuestas:
Tal vez solo parezcan tener el mismo nombre.
Tratar:
Se ven más o menos lo mismo.
Ligeramente mejor. El carácter de espacio se marca como
\
(aunque no todas lasls
implementaciones lo hacen).Ahora estamos hablando (todos los caracteres no ASCII se representan como el valor octal de sus constituyentes de bytes)
También podría hacerlo, y eso funciona para cualquier entrada:
Aquí, el final de las líneas está marcado con lo
$
que hace que sea más fácil detectar el espacio final. Sin embargo, eso no ayudará a detectar un archivo llamadoStéphane<newline>Stéphane
Aclara lo que sucedió.
Vea también esta otra respuesta para más información sobre el tema.
fuente
LC_ALL=C sed -n 1
?sed
Ell
comando muestra la entrada en forma visualmente inequívoca. Con LC_ALL = C, nos aseguramos de que solo use caracteres ASCII para eso (aunque al menos con GNUsed
, no es necesario).LC_ALL=C ls -b
ls | LC_ALL=C sed -n l
realmente fue un gran ahorro de tiempo en este momento, ¡gracias!