Đánh dấu ba tập tin cập nhật mới nhất trong đầu ra ls


10

Có cách nào để quá tải hoặc bọc lslệnh để nó làm nổi bật / gạch chân / nếu không làm rõ ba tập tin sửa đổi cuối cùng?

Tôi biết rằng tôi có thể chỉ cần ls -rtlđặt hàng theo thời gian sửa đổi ngược, nhưng tôi thường cần một danh sách các tệp theo thứ tự chữ cái mặc dù thực tế là tôi muốn nhanh chóng xác định tệp cuối cùng mà chính tôi hoặc nhà phát triển khác đã sửa đổi.

Câu trả lời:


15

Những điều sau đây có vẻ hiệu quả với tôi

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

Nó sử dụng grep với phần tô sáng trên đầu vào ls -lvà sử dụng biểu thức chính quy để tìm kiếm một trong hai đầu vào cho ba lệnh cũ nhất. Nó cũng tìm kiếm đến cuối dòng $để in toàn bộ tập tin.

Bạn cũng có thể đặt nó trong một hàm, sao cho bạn có thể sử dụng lll *với nhiều đối số, giống như bạn sẽ sử dụngls

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

1
1: Đó là nhiều đẹp hơn so với cái-liner điên tôi cuối cùng đã đưa ra: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
Đó là sử thi lố ​​bịch. : D
whoami

Công việc tuyệt vời Tôi sẽ lưu ý rằng nếu bạn thử điều này trong một thư mục chứa ít hơn ba tệp, thì tôi sẽ gặp lỗi "grep: Phạm vi kết thúc không hợp lệ".
Jason R

1
@dotancohen Chào mừng bạn, cảm ơn vì đã thử thách :)
Bernhard

1
function lll () { command grep --color -E -- "$(ls -rtl $1 | tail -n3)|$" <(ls -l $1) }Với chức năng này, bạn có thể đưa ra một thư mục làm đối số, tức là lll /home@dotancohen
Bernhard

4

Nó sẽ không làm nổi bật ba tệp sửa đổi cuối cùng (mà tôi nghĩ là khá khó để đạt được một cách đáng tin cậy), nhưng ls++có thể là đủ cho những gì bạn muốn. Nó làm nổi bật các tệp theo độ tuổi tương đối, nhóm theo các tệp màu là giây, giờ, ngày hoặc tháng.

ảnh chụp màn hình ls ++

Bạn có thể định cấu hình màu sắc để làm cho thời gian bạn có xu hướng hoạt động rõ ràng hơn (đối với mã hóa hoạt động, giờ so với ngày là điểm giao thoa quan trọng nhất đối với tôi).


Tốt đẹp, cảm ơn. Tuy nhiên, tôi thường SSH vào các máy chủ mà tôi không thể cài đặt các gói trên đó.
dotancohen

1
@dotancohen Đó là một tập lệnh perl duy nhất, bạn sẽ có thể cài đặt nó vào thư mục chính của bạn ( ~/binhoặc một cái gì đó, thêm vào PATH của bạn trong hồ sơ) - mặc dù điều này sẽ không hoạt động nếu có các phụ thuộc không được cài đặt.
Random832

Tôi hiểu rồi, cảm ơn Ngẫu nhiên! Trong thực tế, tôi thường có những thứ trong $HOME/bin/.
dotancohen
Khi sử dụng trang web của chúng tôi, bạn xác nhận rằng bạn đã đọc và hiểu Chính sách cookieChính sách bảo mật của chúng tôi.
Licensed under cc by-sa 3.0 with attribution required.