Tôi có một tập hợp các tệp trong một thư mục. Tôi cần phải tìm tệp cho một tập hợp các ngày cụ thể (Ví dụ: nếu tôi cần tệp từ ngày 16 tháng 1 đến ngày 20 tháng 1). Tôi đã thử sử dụng ls -ltr | grep <date>
nhưng thực hiện quá nhiều bước để thực hiện việc chọn tệp. Có cách nào dễ dàng hơn để hoàn thành công việc này không. Cảm ơn!Cách sử dụng ls để tìm tệp cho một tập hợp ngày cụ thể trong Unix
Trả lời
Tôi không chắc chắn có bao nhiêu dữ liệu mà bạn có trong bạn thư mục nhưng một cái gì đó như thế này nên được blindingly nhanh:
ls -al | awk '$6 == "Jan" && $7 >= 16 && $7 <= 20 {print $9}'
Trên hệ thống của tôi, tôi thấy những điều sau với một chút thay đổi ngày :
pax> ls -al | awk '$6 == "Jan" && $7 >= 16 && $7 <= 29 {print $9}'
kids_shares.ods
our_savings.gnumeric
photos
pax> ls -ald kids_shares.ods our_savings.gnumeric photos
-rw-r--r-- 1 pax pax 51005 Jan 29 19:39 kids_shares.ods
-rw-r--r-- 1 pax pax 2275 Jan 28 14:48 our_savings.gnumeric
drwxrwxrwx 130 pax pax 4096 Jan 29 21:47 photos
Bạn có thể thấy ngày phù hợp với các tệp đã cho.
Một điều cần lưu ý: nếu tệp gần đây, nó sẽ có thời gian trong cột 8. Ngoài một số tuổi, ls
bắt đầu đặt năm ở đó. Tôi có hồi tưởng mơ hồ rằng nó ở đâu đó xung quanh biên giới sáu tháng tuổi nhưng tôi không hoàn toàn chắc chắn. Bạn sẽ cần phải phục vụ cho điều đó là tốt.
làm việc tuyệt vời ... – Shash
Sử dụng find(1)
thay vào đó, điều đó sẽ dễ dàng hơn nhiều.
find . -mtime -$start -mtime +$end
'tìm' có cờ' -newer' (để xem nếu nó mới hơn một tệp khác) nhưng tiếc là không phải là một '-older'. Tôi không chắc nó phù hợp với những phạm vi ngày rất cụ thể này. – paxdiablo
@paxdiablo nó là phù hợp, tôi chỉ cần thêm một ví dụ (cũng có, tìm có '!' (Không) nhà điều hành) – wich
Ooh, tôi đã không nghĩ về điều đó. Cuộc gọi tốt. – paxdiablo
Bạn nên sử dụng find
. Bắt đầu bằng cách tạo hai tệp tạm thời với thời gian cụ thể để tìm kiếm giữa. touch
thể làm điều này:
touch -t "201301160001" ./start
touch -t "201301202359" ./finish
Sau đó chạy find
:
find /path/to/files -type f -newer ./start ! -newer ./finish
Thực ra, cả hai giải pháp dựa trên tìm kiếm này có lẽ tốt hơn so với tôi - chỉ cần sử dụng maxdepth nếu bạn không muốn đi vào các thư mục con. 1 cho cả hai. – paxdiablo
@paxdiablo: Cảm ơn bạn đời. Tôi đáp lại bởi vì (mặc dù tôi không muốn phân tích đầu ra 'ls') OP _did_ muốn nó làm theo cách đó, và 'awk' là một lựa chọn tốt. – Steve
Điều này làm việc tuyệt vời cho tôi một cách tương tác nhưng không trả lại kết quả nào khi được sử dụng trong một tập lệnh (hoặc bằng './Script.sh',' bash script.sh' hoặc 'source script.sh'). Tôi nghĩ nó liên quan đến vụ nổ; khi tôi sử dụng 'bash -x' để gỡ lỗi, nó được bao quanh với dấu nháy đơn; chạy lệnh theo cách này sẽ không trả về gì cả. – rensa
- 1. Unix cURL POST tới biến cụ thể bằng cách sử dụng nội dung từ một tệp
- 2. cách trích xuất các byte cụ thể từ một tệp bằng cách sử dụng unix
- 3. Tìm chủ sở hữu của một tệp trong unix
- 4. Nhận kỷ nguyên cho một ngày cụ thể bằng cách sử dụng Javascript
- 5. UNIX 'ls' lệnh - wildcard 'OR' hành
- 6. Làm thế nào để xóa một dòng cụ thể từ một tập tin trong Unix?
- 7. Sử dụng lệnh Unix JOIN để hợp nhất hai tệp
- 8. cách tìm tập tin trong một nhánh cụ thể
- 9. Làm thế nào để tìm số cổng cho một id quá trình cụ thể trong unix?
- 10. Tìm một ngày cụ thể thuộc về
- 11. Tìm nạp email cho một ngày cụ thể trong C# bằng cách sử dụng Dịch vụ Web Exchange
- 12. Tìm tệp trên cửa sổ được sửa đổi sau một ngày cụ thể bằng cách sử dụng dòng lệnh
- 13. có cách nào để tìm kiếm một tập hợp các khác biệt cho một chuỗi cụ thể cho một tệp không?
- 14. Làm thế nào để tìm kiếm một môi trường bằng cách sử dụng ls() bên trong một hàm?
- 15. kết hợp nhiều tệp pdf trong linux bằng cách sử dụng tập lệnh?
- 16. cách tìm nạp dữ liệu lịch cho một ngày cụ thể trong API lịch Google v3?
- 17. Cách lấy ngày từ một ngày cụ thể bằng cách sử dụng JavaScript
- 18. Cách lấy tên ngày hiện tại bằng cách sử dụng ngày cụ thể trong Android?
- 19. In tệp quyền như 'ls -l' bằng cách sử dụng chỉ số (2) trong C
- 20. Cách tìm Tập hợp - Tập hợp con của hai tệp từ dòng lệnh?
- 21. git ls-files với ngày?
- 22. Mở một tệp trên Unix bằng cách sử dụng C++
- 23. Cách tìm các hàm trong tệp cpp có chứa một từ cụ thể
- 24. Làm thế nào để giám sát các quy trình truy cập một tập tin cụ thể trong Unix?
- 25. Sử dụng VBScript để tìm ngày tệp gần đây nhất trong một thư mục
- 26. Không thể đặt lại tệp cho một cam kết cụ thể bằng cách sử dụng Git
- 27. Lệnh 'ls' hoạt động như thế nào trong Linux/Unix?
- 28. Cách tạo tệp .ics bằng PHP cho một phạm vi ngày và thời gian cụ thể
- 29. Cách sử dụng MouseListener để tìm một ô cụ thể trong lưới
- 30. Tìm ngày bằng cách trừ số X ngày kể từ ngày cụ thể trong Javascript
Shash, có một suy nghĩ về câu trả lời được chấp nhận, tôi nghĩ tìm có thể là một công cụ tốt hơn cho công việc. – paxdiablo
@paxdiablo Ok., Sẽ thử thậm chí là – Shash