ls -l 출력에서“total <size>”줄을 제거하는 가장 쉬운 방법은 무엇입니까?


14

Google / man ls을 통해 찾을 수있는 최선 은 다음과 같습니다.

ls -l | grep -v '^total'

깃발에 누락 된 것이 ls있습니까?

또한 -h 플래그에 관계없이 왜 총 크기가 kb입니까? 내가 뭘보고 있었는지 잘 모르겠다.


4
아마도 조금 더 효율적 일 수 있습니다 ls -l | tail -n+2. 나머지에는 대답이 없습니다.
enzotib

나는 enzotib의 방법을 더 좋아합니다. 제안 : 별명으로 설정하고 이름을 지정하십시오 lsl. 단지 3 글자;) oh와 ls -lh는 1.2K 스타일 크기를 보여줍니다.
Rinzwind

가장 쉬운 방법이라고 생각합니다.
Robert

답변:


11

의 소스 코드를 살펴보면 디렉토리 에서 옵션을 사용할 때 항상 표시되는 coreutils것을 알았습니다 .total-l

-d옵션을 사용하여 디렉토리 내용 대신 항목을 나열합니다 total. 그러나 인수없이 (또는 디렉토리에서) 실행하면 디렉토리가 아닌 디렉토리가 표시됩니다. 따라서 와일드 카드가 필요합니다. *모든 파일과 .*일치하고 숨겨진 파일도 일치합니다 ( -a옵션에 해당 ).

ls -ld * .*

에 관해서는 -h옵션, 나를 위해 작동합니다. 1118360 바이트는 1.1M으로 표시됩니다. 1024보다 작은 파일은 바이트 단위로 표시됩니다.


1
실제로 -d는 항목 대신 디렉토리를 나열합니다.
H2ONaCl

@broiyan ls매뉴얼 페이지를 편지로 가져 가거나 다음을 고려할 ls /수 있습니다. " /파일 인 경우 항목을 나열 하거나 디렉토리 인 /경우 디렉토리 내용 "으로 해석 될 수 있습니다 . 를 사용 -d하면 마지막 조건이 제거되고 항상 디렉토리 내용 대신 항목이 인쇄됩니다. 경로가 파일 또는 디렉토리인지 여부에 관계없이 적용됩니다.
Lekensteyn

내가 할 수 있다면 나는 이것을 다시
dps

7

ls디렉토리 목록 실행 을 피하기 위해 와일드 카드를 사용하면 ls과 같은 옵션 을 사용할 수 없으므로 최적이 아닙니다 --almost-all.

Enzotib의 제안 과 마찬가지로 그것을 제거하는 가장 간단한 방법 tail은 첫 번째 줄을 잘라내 도록 파이프를 통과 시키는 것입니다. 그러나 ls출력이 대화식이 아닌 파이프임을 감지하고 원하지 않는 방식으로 기본값을 변경합니다. 따라서 견고하게하려면 몇 가지 옵션을 추가해야합니다.

  • --color=always: 계속 색상 표시
  • --hide-control-chars: ?콘솔 출력을 망칠 수있는 제어 문자 대신 파일 이름으로 인쇄

스크립트가 있습니다 ~/bin/l(에서 Bash 별칭을 사용할 수도 있습니다 ~/.bash_aliases).

#!/bin/bash
ls -l --color=always --hide-control-chars "$@" | tail --lines=+2

ls기본적으로 원하는 다른 옵션을 추가 할 수도 있습니다 ( 예 :) --group-directories-first --time-style='+%FT%T.%N%:::z' --indicator-style=slash.


그러나 여러 파일 이름을 ls에 전달하면 작동하지 않습니다.
Sparhawk

3

ls -l *

을 사용하지 않고 "일반적으로 이름이 지정된"폴더 내용을 제공합니다 total. 그것은 당신의 필요에 적합 할 것입니다. 불행히도 dot접두사 파일을 제공하지 않습니다 . 당신이 사용하는 경우 ls -l * .*리눅스는 트리를 탐색하기 때문에 당신은 혼란을 얻을 것이다.

점 접두사는 폴더를 의미하거나 와일드 카드를 사용하면 위의 폴더를 의미하므로 접두사가 붙은 일반 파일을 선택하는 데 도움이되지 않습니다. 이것은 불행한 디자인 결정으로 보인다.


1

$ ls -l [DIRECTORY] | sed 1d
(출력은 파일 이름을 포함합니다)

$ ls -ld [path-to-dir]/*
(출력에는 상대 경로가 포함되지만 색상은 보존됩니다)

$ ls -l [DIRECTORY] | tail -n +2

$ ls -l [DIRECTORY] | awk 'NR>=1'


참고 :
"total ...."이라는 파일이있는 경우 다음이 작동하지 않습니다.

$ ls -l | grep -v '^total'

당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.