Você pode mostrar os resultados de ls -lapor favor?
precisa saber é o seguinte
2
Melhor ainda, ls -lb(ou ls -lab, se o nome começar com .).
G-Man diz 'Restabelecer Monica
1
Além disso, o que exatamente aconteceu? Você fez o download dir1/fooe dir2/foona máquina X, em seguida scp, colocou-as dir42na máquina Y e elas apareceram como arquivos separados com o mesmo nome? Ou você baixou dois arquivos com o mesmo nome no mesmo diretório (na máquina X) e eles saíram como arquivos separados com o mesmo nome?
Um pouco melhor. O caractere de espaço é sinalizado como \ (embora nem todas as lsimplementações façam isso).
$ LC_ALL=C ls -1b
Ste\314\201phane
St\303\251phane
St\303\251phane\
St\342\200\213\303\251phane
Agora estamos falando (todos os caracteres não ASCII são renderizados como o valor octal de seus constituintes de bytes)
Você também pode fazer, e isso funciona para qualquer entrada:
$ ls | LC_ALL=C sed -n l
Ste\314\201phane$
St\303\251phane$
St\342\200\213\303\251phane$
St\303\251phane $
Aqui, o final das linhas é marcado com o $que facilita a localização do espaço à direita. No entanto, isso não ajudará a localizar um arquivo chamadoSté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>
Se você não se importa que eu pergunte a Stephane, o que o comando canalizado LC_ALL=C sed -n 1faz?
precisa saber é o seguinte
3
sedO lcomando de exibe a entrada de forma visualmente inequívoca. Com LC_ALL = C, garantimos que ele use apenas caracteres ASCII para isso (embora pelo menos no GNU sed, não seja necessário).
Stéphane Chazelas
2
@ StéphaneChazelas Você também pode usar:LC_ALL=C ls -b
vinc17
@ vinc17, bom ponto, também é melhor do que sed para localizar arquivos com caracteres de nova linha, mas nem sempre para localizar espaço à direita. Eu adicionei à resposta.
Stéphane Chazelas
Porra, até que você possa ter espaços no final de um nome de arquivo e parece que existem dois arquivos de nomes idênticos no sistema de arquivos.! Ótima resposta, ls | LC_ALL=C sed -n lrealmente economizou muito tempo agora, obrigado!
ls -la
por favor?ls -lb
(ouls -lab
, se o nome começar com.
).dir1/foo
edir2/foo
na máquina X, em seguidascp
, colocou-asdir42
na máquina Y e elas apareceram como arquivos separados com o mesmo nome? Ou você baixou dois arquivos com o mesmo nome no mesmo diretório (na máquina X) e eles saíram como arquivos separados com o mesmo nome?Respostas:
Talvez eles apenas pareçam ter o mesmo nome.
Experimentar:
Eles parecem praticamente o mesmo.
Um pouco melhor. O caractere de espaço é sinalizado como
\
(embora nem todas asls
implementações façam isso).Agora estamos falando (todos os caracteres não ASCII são renderizados como o valor octal de seus constituintes de bytes)
Você também pode fazer, e isso funciona para qualquer entrada:
Aqui, o final das linhas é marcado com o
$
que facilita a localização do espaço à direita. No entanto, isso não ajudará a localizar um arquivo chamadoStéphane<newline>Stéphane
Torna mais claro o que aconteceu.
Veja também esta outra resposta para mais informações sobre o assunto.
fonte
LC_ALL=C sed -n 1
faz?sed
Ol
comando de exibe a entrada de forma visualmente inequívoca. Com LC_ALL = C, garantimos que ele use apenas caracteres ASCII para isso (embora pelo menos no GNUsed
, não seja necessário).LC_ALL=C ls -b
ls | LC_ALL=C sed -n l
realmente economizou muito tempo agora, obrigado!