[server] ls를 한 줄에 모두 인쇄하십시오 (터미널처럼)

ls 출력이 터미널인지 또는 다른지에 따라 다르게 인쇄됩니다.

예 :

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

ls터미널이 아닌 것처럼 한 줄에 인쇄하는 방법이 있습니까? 거기에의 -C할까 그런 않는다는 것을 주장하지만, 여러 라인으로 분할됩니다.

$ 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

내가 원하는 이유는 빠르게 변경되는 디렉토리의 파일을 모니터링하기 때문입니다. 이 간단한 명령 줄을 구성했습니다.

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

uniq은 터미널에 스팸을 보내지 않고 변경 사항 만 표시하지 못하게합니다. 그러나 그것은 모두 다른 라인에 인쇄하고있어 uniq를 쓸모 없게 만들고 소음을 증가시킵니다. 이론적으로 watch는 이것을 사용할 수 있지만 파일이 나타나거나 사라지는 즉시 파일을보고 싶었습니다.

이것이 최종 해결책입니다.

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



답변

나는 그것을 할 수있는 스위치를 모른다. 그러나 tr그것을하기 위해 출력을 파이프 할 수 있다.

ls | tr "\n" " " | <whatever you like>


답변

ls | xargs

그것은 내가 찾은 가장 간단한 방법입니다. 이것이 도움이되기를 바랍니다.


답변

ls이 옵션이 있으면 높은 값을 사용할 수 있으며 원하는 것을 할 수 있습니다.

ls -w 10000 -C . | head


답변

아, 이제 질문을 업데이트했습니다 ….

while true ; do echo * ; done | uniq

게시 한 내용을 더 간단하게 수행합니다.

그러나 inotify를 사용 하여이 작업을 수행하는 것이 좋습니다.

inotifywait -m . -e create,delete

inotify가 없으면 다음과 같이 작동합니다.

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)


답변

아주 사소한 것은 어떻습니까?

echo *

? 🙂 심지어 포크 할 필요도 없습니다. 🙂


답변

이것은 당신이 찾고있는 것일 수도 있지만 나는 당신의 질문을 오해했을 수도 있지만 여기에갑니다 🙂

살펴볼 가치가있는 몇 가지 명령 :

watch-출력 전체 화면 xargs를 보여주는 프로그램을 주기적으로 실행-표준 입력에서 명령 행 빌드 및 실행 (공백 등이있는 파일을 처리하려는 경우 -0)

2 초 간격으로 변경된 마지막 10 개 파일 / 디렉토리를 표시하기 위해 다음과 같은 작업을 수행 할 수 있습니다 (시계의 기본값).

“ls -lart | tail -10″시계

-lart 옵션은 ls에게 수정 시간에 따라 자세하고 정렬되도록 지시합니다.

파일을 정말로 원한다면 다음과 같이하십시오.

“ls -lart | awk ‘{print \ $ 8}’| tail -10 | xargs”시청

또는 단지 그것들을 표시하기 위해 :

LS -lart | awk ‘{print $ 8}’| 꼬리 -10 | xargs


답변

쉘에서 백틱을 사용하여 다음과 같이 얻을 수 있습니다.

echo -E `ls -1`