ls 출력에서 ​​마지막으로 업데이트 된 3 개의 파일을 강조 표시합니다


10

ls명령 을 오버로드하거나 줄 바꿈하여 강조 표시 / 밑줄 표시 / 그렇지 않으면 마지막 세 개의 수정 된 파일을 분명히하는 방법이 있습니까?

나는 단순히 ls -rtl역 수정 시간으로 주문할 수 있다는 것을 알고 있지만, 나 자신이나 다른 개발자가 수정 한 마지막 파일을 신속하게 식별하고 싶음에도 불구하고 알파벳순 으로 파일 목록 이 필요합니다 .

답변:


15

다음은 나를 위해 작동하는 것 같습니다

 grep --color -E -- "$(ls -rtl | tail -n3)|$" <(ls -l)

입력시 강조 표시와 함께 grep을 ls -l사용하고 정규 표현식을 사용하여 가장 오래된 세 명령의 입력 중 하나를 검색합니다. 또한 $전체 파일을 인쇄하기 위해 줄 끝을 검색 합니다.

사용 lll *하는 것처럼 여러 인수와 함께 사용할 수 있도록 함수에 넣을 수도 있습니다.ls

function lll ()
{
    command grep --color -E -- "$(ls -rtl $@ | tail -n3)|$" <(ls -l $@)
}

1
+1 : 결국 내가 생각했던 미친 1 라이너보다 훨씬 좋았습니다.ls -l | grep --color=ALWAYS -C 1000 -E `ls -rt | tail -n 3 | perl -0777 -e '$x=join("|",split(" ",<>));print $x'`
ire_and_curses

2
그것은 엄청나게 서사시입니다. : D
whoami

멋진 일. 파일이 3 개 미만인 디렉토리에서이 작업을 시도하면 "grep : Invalid range end"오류가 발생합니다.
Jason R

1
@dotancohen 천만에요. 도전 해 주셔서 감사합니다. :)
Bernhard

1
function lll () { command grep --color -E -- "$(ls -rtl $1 | tail -n3)|$" <(ls -l $1) }이 함수를 사용하면 디렉토리를 인수로 지정할 수 있습니다. 예 : lll /home@dotancohen
Bernhard

4

마지막으로 수정 된 파일 3 개를 강조 표시하지는 않지만 (확실히 달성하기가 매우 어렵다고 생각하지만) ls++원하는만큼 충분할 수 있습니다. 초, 시간, 일 또는 몇 개월 된 색상 파일별로 그룹화하여 상대 연령별로 파일을 강조 표시합니다.

LS ++ 스크린 샷

색상을 구성하여 작업하기 쉬운 시간표를보다 명확하게 만들 수 있습니다 (활성 코딩의 경우 시간 대 일이 나에게 가장 중요한 교차점입니다).


감사합니다 그러나 일반적으로 패키지를 설치할 수없는 서버에 SSH로 연결하고 있습니다.
dotancohen

1
@dotancohen 단일 perl 스크립트이므로 홈 디렉토리에 설치 ~/bin하거나 프로파일의 PATH에 추가 할 수 있어야합니다. 설치되지 않은 종속성이 있으면 작동하지 않습니다.
Random832

알겠습니다, 랜덤 감사합니다! 사실 나는 보통 물건을 가지고 있습니다 $HOME/bin/.
dotancohen
당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.