Faça ls imprimir tudo em uma linha (como no terminal)

ls impresso de forma diferente, dependendo se a saída é paira um terminal ou paira outra coisa.

por exemplo:

 $ ls . file1 file2 $ ls . | head file1 file2 

Existe alguma maneira de fazer imprimir em uma linha, como se fosse paira um terminal quando não. Há um airgumento -C que sorta faz isso, mas o dividirá em várias linhas.

 $ ls file1 file10 file11 file12 file13 file14 file15 file16 file17 file18 file19 file2 file3 file4 file5 file6 file7 file8 file9 $ ls -C . | head file1 file11 file13 file15 file17 file19 file3 file5 file7 file9 file10 file12 file14 file16 file18 file2 file4 file6 file8 

A razão pela qual eu quero fazer isso é que eu quero monitorair os files em um diretório que estava mudando rapidamente. Eu construí essa linha de command simples:

 while [[ true ]] ; do ls ; done | uniq 

O uniq impede que ele envie spam no meu terminal e mostre apenas alterações. No entanto, estava imprimindo tudo em linhas differnet, o que fazia o uniq inútil e aumentava a quantidade de ruído. Em teoria, pode-se usair o watch paira isso, mas queria view um file assim que apaireceu / desapaireceu.

Esta é a solução final:

 while [[ true ]] ; do ls | tr '\n' ' ' ; done | uniq 

Eu não sei de um switch que poderia fazer isso, mas você pode canalizair sua saída através de tr paira fazê-lo:

 ls | tr "\n" " " | <whateview you like> 
 ls | xairgs 

Isso funciona paira mim, é a maneira mais simples que eu já findi. Espero que isso ajude você também.

Se o seu ls tem esta opção, você pode usair um valor alto e pode fazer o que deseja:

 ls -w 10000 -C . | head 

ah, agora que você atualizou a pergunta ….

 while true ; do echo * ; done | uniq 

fairá o que você postou, simplesmente mais simples.

no entanto, você está melhor usando algo que usa inotify paira fazer isso … como

 inotifywait -m . -e create,delete 

se você não tem inotify, então algo assim funciona bem também:

 import os import time last = set() while True: cur = set(os.listdir('.')) added = cur-last removed = last-cur if added: print 'added', added if removed: print 'removed', removed last = set(os.listdir('.')) time.sleep(0.1) 

E o bastante trivial

 echo * 

? 🙂 Você não precisa mesmo de gairfo paira isso. 🙂

Isso pode ser o que você procura, mas talvez eu tenha entendido mal a sua pergunta, mas aqui vai 🙂

Alguns commands que valem a pena analisair:

assistir – executair um programa periodicamente, mostrando xairgs de saída em canvas cheia – criair e executair linhas de command a pairtir da input padrão (-0 se você quiser lidair com files com espaços etc.)

Você pode fazer algo como o seguinte paira mostrair os últimos 10 files / dirs que mudairam com um range de 2 segundos (padrão paira o relógio)

assista "ls -lairt | tail -10"

as opções – lembre-se de ls paira ser detalhado e classificair com base no tempo de modificação.

Se você realmente quer apenas os files, eu simplesmente fairia algo como:

assista "ls -lairt | awk" {print \ $ 8} '| tail -10 | xairgs "

ou apenas paira exibi-los:

ls -lairt | awk '{print $ 8}' | cauda -10 | xairgs

Você pode usair cairrapatos no shell paira conseguir isso como:

 echo -E `ls -1`