¿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 -lapor favor?ls -lb(ols -lab, si el nombre comienza con.).dir1/fooydir2/fooen la máquina X, luegoscplos 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?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 laslsimplementaciones 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éphaneAclara lo que sucedió.
Vea también esta otra respuesta para más información sobre el tema.
fuente
LC_ALL=C sed -n 1?sedEllcomando 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 -bls | LC_ALL=C sed -n lrealmente fue un gran ahorro de tiempo en este momento, ¡gracias!