파일 이름 날짜와 크기 만 표시하는 Linux ls


72

ls리눅스에서 파일 이름 날짜 및 크기 목록을 얻는 방법은 무엇입니까 ? 소유자 또는 권한과 같은 다른 정보를 볼 필요가 없습니다. 이게 가능해?


1
ls날짜 시간별로 정렬이 매우 빠르기 때문에 훌륭하지만 서식을 처리하기가 어렵습니다. --time-style='+&%Y%m%d+%H%M%S.%N'토큰이 '&'인 것처럼 --time-style에서 토큰을 사용하는 것이 좋습니다. 이를 참조로 사용하여 출력을 추가로 구문 분석 sed할 수 있으므로 토큰이 크기 직전과 같이 역 추적 할 수 있습니다! 누군가가 그 답을 완전한 답으로 게시하고 싶을 때, 나는 지금 너무 자고 있습니다 :)
Aquarius Power

답변:


98

stat대신에 사용 하지 ls않겠습니까?

stat -c "%y %s %n" *

1
이것은 좋지만 "환경이 너무 큼"/ "인수 목록이 너무 깁니다"문제가 발생할 수 있습니다.
Mat

4
:-) 단지 개념 증명. Real Life [tm]에서 이것은find . -type f -print0 | xargs -0 stat -c "%y %s %n"
f4m8

5
의 출력을 형식화 하기 위해 C printf 함수와 같은 형식 문자열 stat너비 정보를 추가 할 수 있습니다 . 예를 들어 "%y %8s %n"문서화되지 않았지만 작동하는 것 같습니다 (coreutils 8.17, Fedora 18)
LiuYan 刘 研

왜냐하면 ls천 단위 구분 문자로 출력 할 수 있기 때문입니다. 그것은 어떻게 작동 stat합니까?
Al Bundy

이것이 어떻게 질문에 대답하는지 모르겠습니까?! 박스 솔루션 외부에서는 훌륭하지만의 모든 이점을 잃을 수 있습니다 ls. 색상은 어떻습니까?
MS Berends

30

find유틸리티를 사용하여 파일을 나열하는 방법을 많이 제어 할 수 있습니다 . ls실제로 원하는 열을 지정할 수는 없습니다.

예를 들면 다음과 같습니다.

$ find . -maxdepth 1 -printf '%CY%Cm%Cd.%CH%CM\t%s\t%f\n'
20111007.0601   4096    .
20111007.0601   2   b
20111001.1322   4096    a

printf액션에 대한 논쟁 은 맨 페이지에 자세히 설명되어 있습니다. 다른 시간 정보, 원하는 크기 (사용 된 파일 크기 또는 디스크 블록) 등을 선택할 수 있습니다. 추가 처리가 필요한 경우 비정상적인 파일 이름에 대해 안전 할 수도 있습니다.


1
찾기 위의 입력 값 ( '% CY % Cm % Cd. % C ...')이 길다. 최소한 GNU find에는 %C+( "2016-08-29 + 10 : 57 : 56.9201257840" %Cc출력 ) 및 ( "Mo 29 Aug 2016 10:57:56 CEST"출력)
guettli

이것이 Mac에서 작동하기를 바랍니다.
Jerinaw

전체 경로와 크기 만 인쇄하려면 "find / path / to / -printf '% h / % f % s \ n'"
Pierluigi Vernetto

24

항상 1awk 의 출력을 형식화하는 것과 같은 다른 유틸리티를 사용할 수 있습니다 .ls

/bin/ls -ls | awk '{print $7,$8,$9}'


1. 예, 일반적으로 ls의 출력을 구문 분석해서는 안되지만 이 경우 질문에 구체적으로 요구됩니다 ...


그래도 파일 크기는 인쇄하지 않습니다. 그리고 파일 이름의 첫 부분 만 공백으로 인쇄합니다. ls별칭이 지정 되면 (예 : 실패) 실패 할 수 있습니다 alias ls='ls -i'. ls 출력 구문 분석을 원한다면 실제로 많은주의를 기울여야합니다.
Mat

거기에 파일 크기가 있고 편집했습니다 (모호한 순간)-복원합니다. 그리고 나는 파싱에 대한 모든 경고에 동의 ls하지만 그것은 OP가 원했던 것입니다 ...
jasonwryan

동의하지 않습니다. OP는 파일 이름에 공백이 있으면 파일 이름의 첫 부분이 아닌 파일 이름을 원합니다. (를 사용 /bin/ls하면 별칭 문제를 피할 수 있습니다.)
Mat

암묵적 으로 이해됩니다 . 명시 적으로 명시된 것은 OP가 ls우리가 동의 한 솔루션 이 공백 요구 사항을 충족시키지 않기를 원한다는 것입니다. /bin/ls제안은 좋은 것입니다.
jasonwryan

이 해결책을 사랑하십시오; 크기를 인쇄하지 않는 것에 대한 이전 의견과 관련하여 ls로 크기를 얻을 -h수 있으며 사람이 읽을 수 있도록 만들 수 있습니다 . 구체적으로 다음 ls -lah | awk '{print $5,$6,$7,$8}'을 사용했습니다 4.0K Jan 24 18:17. 물론 원래 솔루션은 awk에 대해 아무 말도하지 않지만 Linux에서는 프로세스의 출력이 항상 다른 프로세스의 입력이 될 것이라고 가정해야합니다. ;)
abgordon

5

'date'명령을 사용할 수도 있습니다. 사용하기 매우 쉽습니다 :

날짜 -r [파일 이름]


니스, 이것은 나에게 새로운 것이었다. 불행히도 그것은 globbing을 통해 여러 파일에서 작동하지 않습니다 : date -r foo*.txt->date: extra operand "foo2.txt"
guettli

4

ls를 사용하고 싶지만 적절한 크기를 유지하려면 다음을 사용할 수 있습니다.

ls -Ss1pq --block-size=1

1

여기서 공간은 분리 자로 정의되고 f6은 필드 6을 의미합니다.

ls -lt | cut -d" " -f6-

2
ls는 들여 쓰기에 공백을 사용하기 때문에 실패하고 때로는 -f6-입니다. -f5-
Aquarius Power

1

두 명령을 파이프 라인 할 수 있습니다

ls -l|cut -d" " -f5

1
ls는 들여 쓰기에 공백을 사용하기 때문에 실패하고 때로는 -f6-입니다. -f5-
Aquarius Power

-1

ls -s1 은 Linux에서만 파일 크기와 이름을 AIX에서만 반환합니다.


2
이것이 왜 질문에 대한 답이라고 생각하는지 설명 할 수 있습니까?
Scott
당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.