Tìm tập tin mới nhất. Nhiều hạn chế Filetype


7

Tôi muốn viết một lệnh cung cấp cho tôi tệp mới nhất trong một thư mục đệ quy . Nhưng đó không phải là giới hạn duy nhất của tôi. Các tập tin phải là một tệp mp3 hoặc jpg . ( trường hợp không nhạy cảm thích) Tôi chỉ cần ngày tạo của tệp mới nhất đó. Nếu có thể tôi muốn nó được định dạng như thế này: 30-12-2014 (vì vậy: ngày-tháng-năm )

Điều này hiện tại tôi đã có:

find .  -name '*.mp3' -or -name '*.JPG'   -printf "%TD \n" | sort -rn | head -n 1

Nhưng nó không hoạt động tốt. Tôi chỉ nhận được JPG và ngày không được định dạng.


Câu trả lời:


5

Một cái gì đó như thế này sẽ hoạt động:

find . \( -iname "*.mp3" -o -iname "*.jpg" \) -printf '%TY%Tm%Td %TT %p\n' | sort -r

Điều này sẽ tìm các tệp (không phân biệt chữ hoa chữ thường) tìm các tệp kết thúc bằng mp3 hoặc jpg, in ra thời gian sửa đổi, sau đó sắp xếp nó theo thứ tự ngược lại.

Nó dường như hiển thị cả hai loại tệp khi bạn chạy nó hiệu quả dưới dạng hai lệnh:

( find . -iname "*.mp3" -printf '%TY%Tm%Td %TT %p\n' ; find . -iname "*.jpg" -printf '%TY%Tm%Td %TT %p\n' ) | sort -r

Tôi chỉ nhận được các tệp .jpg bằng lệnh đó. Không có mp3 nào được hiển thị. Chuyển qua themp3 và jpg, chỉ cung cấp cho tôi mp3
user2815780

@Wilf bạn cần \( -iname '*.mp3 -o -iname '*.jpg' \) nếu không nó sẽ phù hợp với cái này hay cái khác.
Valentin Bajrami

@ val0x00ff - cảm ơn - tự hỏi tại sao nó lại kỳ lạ ... nó có một lý do thực sự tại sao tìm thấy điều này? Trước đây tôi cũng thấy nó cũng có vấn đề với đường dẫn ...
Wilf

1
@Wilf cuộn xuống một chút trên trang web này: mywiki.wooledge.org/UsingFind và bạn sẽ tìm thấy câu trả lời.
Valentin Bajrami

4

Với zsh:

setopt extendedglob
zmodload zsh/stat
zstat -F %F +mtime -- **/(#i)*.(mp3|jpg)(Om[1])

Lưu ý rằng dựa trên thời gian sửa đổi lần cuối , thời gian tạo (bất kể điều đó có nghĩa là gì) thường không có sẵn trên Linux.

Nó không xem xét các tập tin ẩn. Tôi muốn họ, thêm Dvòng loại hình trên.


euhm Tôi đang sử dụng debian (và tôi là một noob linux). Các lệnh này không hoạt động. Tôi có cần phải cài đặt một cái gì đó không, vì tôi không muốn.
dùng2815780

1
Bạn chỉ cần gõ zshvà thử giải pháp. Trong hầu hết các hệ thống, zshshell đến theo mặc định.
Ramesh

Không có gì xảy ra trên pi mâm xôi của tôi.
dùng2815780

2

Cũng xem như sau:

find . -type f -mtime -1 \( -name '*.mp3' -o -name '*.jpg' \) -printf '%AY-%Am-%Ad %P \n'

Tôi không nhận được đầu ra: /. Không sụp đổ mặc dù.
dùng2815780

@ user2815780 Bạn có thể chơi bằng -mtime -1cách thay đổi thời gian sửa đổi. Ví dụ: -mtime -10bạn sẽ tìm kiếm các tệp mp3 hoặc jpg được tạo 10 ngày kể từ bây giờ và bạn có thể đặt |head -n4bất cứ thứ gì bạn muốn vào cuối
Valentin Bajrami

không làm việc, xin lỗi. Vẫn không có đầu ra. Được thay đổi theo ngày tạo tệp, nó sẽ cung cấp một số đầu ra: /
user2815780

1
@ user2815780 'Vẫn không có đầu ra' là không đủ. Có lẽ bạn cần tăng -mtime -100 để tìm kiếm 100 dasys mới nhất
Valentin Bajrami

Vâng, đó là những gì tôi đã làm, nhưng nó không hoạt động. Tôi thậm chí còn đặt nó thành 999. Kiểm tra đồng hồ trên hệ thống của tôi và kiểm tra ngày của các tệp. sdtill không có may mắn.
dùng2815780

0

Bạn đã chỉ định -hoặc, cần phải -o, như những người khác đã sửa. Tôi cũng cần dấu ngoặc đơn (chỉnh sửa trên bài viết gốc của tôi). Tôi khuyên bạn nên sử dụng %T@cho trình xác định định dạng (giây kể từ năm 1970) để sắp xếp sạch hơn; sau đó bạn có thể chuyển đổi nó bằng cách sử dụng

date --date="@`find . \\( -iname "*.mp3" -o -iname "*.jpg" \\) -printf '%T@\n' | sort -rn | head -n1`" 

hay bất cứ cái gì. Bạn cũng có thể đặt bất cứ định dạng ngày nào bạn muốn sử dụng +.

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.