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


15

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

4
ls를 다른 명령으로 파이핑하는 경우 무언가 잘못되었습니다. 실제로 무엇을 달성하려고합니까?
Justin

저스틴, 질문을 설명으로 업데이트했습니다.
Rory

답변:


16

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

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



4

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

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)


0

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

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

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


0

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

echo -E `ls -1`

모든 파일 이름에서 작동하지는 않습니다. 시도 :touch ./-en
kasperd

[a-d]해당 정렬로 시작하는 파일이없는 경우에만 중요 합니다. 스크립트에서 실행하면 echo -E너무 불편하지 않으며 후행 줄 바꿈이 중요하지 않을 수 있습니다.
병아리

0

결과를 한 줄로 인쇄해야 할뿐만 아니라 분리 방법을 지정해야하고 ORS로 지정할 수 있기 때문에 이것은 나를 위해 일했습니다.

ls -1 | awk '{ ORS="|"; print; }'
당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.