Tôi có thể liệt kê các tệp được sắp xếp theo ngày được thêm vào thư mục từ công cụ dòng lệnh như ls không?


10

Tôi cần xây dựng một tập lệnh hiển thị các tệp theo cùng thứ tự với thư mục Tải xuống mặc định trong thanh công cụ, được sắp xếp theo Ngày đã thêm, mới nhất trước tiên. Tôi dường như không thể tìm thấy tùy chọn trong ls.

Bất kỳ cách nào khác để làm điều đó?


Hiển thị nó ở đâu ?
Cướp

Dòng lệnh! .Got nó! Tôi cuối cùng đã viết một lót mà thực hiện các mẹo. Vì tôi không có nhiều danh tiếng, tôi chưa thể trả lời câu hỏi của riêng mình, tôi sẽ làm điều đó sau.
Ramiro Araujo

Chào mừng bạn đến với trang Ramiro - bạn sẽ có thể trả lời câu hỏi của mình bất cứ lúc nào - nhưng sẽ có một hạn chế để bạn "đánh dấu là đã chấp nhận" câu trả lời của bạn. Vui lòng chỉnh sửa câu trả lời của tôi cho phù hợp với nhu cầu của bạn hoặc cung cấp câu trả lời của riêng bạn nếu / khi bạn muốn.
bmike

Câu trả lời:


6

Giải pháp đơn giản hơn (nhanh hơn):

mdls -name kMDItemFSName -name kMDItemDateAdded -raw * | \
xargs -0 -I {} echo {} | \
sed 'N;s/\n/ /' | \
sort

1
vâng, tốt hơn nhiều :)
Ramiro Araujo

Ai đó có thể chi tiết những gì từng dòng đó làm gì? Ngoài ra, giải pháp này có thể được thực hiện trong Terminal dưới dạng các dòng lệnh riêng lẻ (tuần tự, lần lượt từng dòng một) hay chỉ trong một tập lệnh?
EJ Mak

4

Ngày được thêm vào được lưu trữ dưới dạng mục siêu dữ liệu kMDItemDateAddedmdlslệnh sẽ hiển thị dữ liệu cho mỗi tệp được truyền dưới dạng đối số cho nó.

Vì vậy, để kết xuất ngày được thêm cho tất cả các tệp trong Tải xuống theo bất kỳ thứ tự tùy ý nào * được mở rộng bằng vỏ của bạn, bạn có thể:

mdls -name kMDItemDateAdded ~ / Tải xuống / *

Bạn sẽ cần hack cùng nhau một số kết hợp find và sed / awk / perl / bất cứ thứ gì để lắp ráp một sự thay thế cho lsnhưng có lẽ mdfind có thể được gọi bởi tập lệnh của bạn thay vì cần phải phát minh lại lsvà phân tích cú pháp đầu ra đó.


1
Đúng! Tôi đã tìm thấy nó sau đó và tạo ra một lớp lót tuyệt đẹp dạy cho tôi rất nhiều điều :) Cảm ơn vì sự giúp đỡ
Ramiro Araujo

2
Dán một lớp lót đó bằng cách chỉnh sửa câu trả lời của tôi - chia sẻ kiến ​​thức!
bmike

2

Chà, như thường lệ, sau khi viết câu hỏi, tôi bắt đầu đào tìm nội dung siêu dữ liệu trong các tệp và cuối cùng đã viết điều này:

ls -a | \
grep -v '^\.$\|^\.\.$' | \
xargs -I {} mdls -name kMDItemFSName -name kMDItemDateAdded {} | \
sed 'N;s/\n//' | grep -v '(null)' | \
awk '{print $3 " " $4 " " substr($0,index($0,$7))}' | \
sort -r

Về cơ bản nó: 1. liệt kê tất cả các tập tin 2. bộ lọc ra. và .. 3. được thêm tên và ngày, một dòng sau 4. dòng kia hợp nhất hai dòng thành 1 dòng 5. trích ngày, thời gian và tên 6. sắp xếp ngược lại (vì datetime là trả trước, nó sắp xếp theo ngày giờ)

Hy vọng nó sẽ giúp người khác! :)

@bmike thực sự, trang web áp đặt cho tôi một hạn chế để trả lời câu hỏi của riêng tôi chỉ sau 8 giờ đăng câu hỏi của tôi, do tôi không có tiếng tăm: D


ồ, tôi chỉ chia một lớp lót thành nhiều dòng cho rõ ràng thôi :)
Ramiro Araujo

1
Sử dụng ls -Athay vì -avậy bạn không phải grep -vcho ....
mfilej

0

người đàn ông ls

 -U      Use time of file creation, instead of last modification for
         sorting (-t) or long output (-l).

1
Không, tôi cần thêm ngày, không phải ngày tạo. Giống như thư mục tải xuống mặc định trong thanh công cụ
Ramiro Araujo

Làm thế nào là ngày được thêm không giống như ngày được tạo ra?
Jason

1
Jason - date được tạo là khi tệp được tạo nên khi Safari tải xuống tệp từ máy tính khác, nó được tạo rõ ràng cho lần tải xuống đó hoặc có thể được tạo ra nhiều tháng hoặc nhiều năm trước khi quá trình tải xuống xảy ra. Xem câu trả lời của tôi để biết chi tiết về nơi dữ liệu này được lưu trữ trên OS X.
bmike
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.