Điểm:0

Xóa chuỗi ngày hôm nay khỏi tất cả các tên tệp trong thư mục

lá cờ cn
Pad

Tôi có một thư mục chứa đầy jpeg được định dạng như thế này:

0001_20210516_XYZ.jpg
0002_20210516_XYZ.jpg
123_20210516_XYZ.jpg
01_20210516_XYZ.jpg

và tôi muốn đổi tên tất cả các tệp để chuỗi ngày ở giữa bị xóa để các tệp trông giống như:

0001_XYZ.jpg
0002_XYZ.jpg
123_XYZ.jpg
01_XYZ.jpg

tôi đã thử sử dụng câu trả lời này để viết regex để xóa 8 chữ số bằng mã này:

đổi tên - 's/^_\d{8}\_//' *

Nhưng điều này đã không làm bất cứ điều gì. Tôi không chắc cách định dạng chính xác để chuỗi ngày ở giữa bị xóa.

Điểm:3
lá cờ hr

Để xóa dấu gạch dưới đầu tiên và 8 chữ số sau bằng cách sử dụng Perl-based đổi tên (còn gọi là đổi tên tập tin), bạn cần bỏ neo bắt đầu dòng ^và dấu gạch dưới thứ hai (nếu không bạn sẽ kết thúc với 0001XYZ.jpg vân vân.)

Cho nên:

đổi tên -n 's/_\d{8}//' *_*_*.jpg

Ngoài ra, bạn có thể sử dụng mmv (từ gói Ubuntu cùng tên):

mmv -n '*_*_*.jpg' '#1_#3.jpg'

Trong cả hai trường hợp, các -N là để thử nghiệm - hãy xóa nó khi bạn hài lòng với những thay đổi được đề xuất.

Nếu bạn đang mắc kẹt với phiên bản đổi tên từ util-linux (được cài đặt như đổi tên.ul trên hệ thống của tôi) thì có khả năng điều tốt nhất bạn có thể làm là khớp chuỗi ký tự _20210516:

rename.ul -vn _20210516 '' *_*_*.jpg

Nếu bạn thực sự cần phải loại bỏ hôm nay ngày bạn có thể khái quát hóa điều đó thành

rename.ul -vn "_$(date +%Y%m%d)" '' *_*_*.jpg

(Lưu ý rằng rename.ul từ util-linux 2.34 làm hỗ trợ một -N mà tôi đang sử dụng ở đây cho mục đích trình diễn - hãy điều chỉnh cho phù hợp nếu phiên bản của bạn không có).

Pad avatar
lá cờ cn
Pad
Điều này mang lại cho tôi lỗi `đổi tên: tùy chọn không hợp lệ -- 'n' Cách sử dụng: đổi tên tệp thay thế biểu thức [tùy chọn]... Tùy chọn: -v, --verbose giải thích những gì đang được thực hiện -s, --symlink hành động trên mục tiêu liên kết tượng trưng -h, --help hiển thị trợ giúp này và thoát -V, --version xuất thông tin phiên bản và thoát Để biết thêm chi tiết, xem đổi tên (1). ` và khi tôi chạy nó mà không có -n, tên tệp của tôi không thay đổi :(
lá cờ hr
@Pad trong trường hợp đó, việc triển khai `đổi tên` mà bạn đang sử dụng không phải là cách tôi quen thuộc - câu trả lời của tôi áp dụng cho cách triển khai dựa trên Perl đôi khi được gọi là `đổi tên tệp`.
Pad avatar
lá cờ cn
Pad
Không thành vấn đề, khi tôi thực hiện -V, tôi nhận được `rename from util-linux 2.23.2`, cảm ơn sự giúp đỡ của bạn! Tôi sẽ tiếp tục cố gắng.
lá cờ hr
@Pad Tôi đã thêm một số tùy chọn khác có thể phù hợp với bạn hơn
lá cờ cn
Còn được gọi là [`prename`](https://manpages.ubuntu.com/manpages/focal/en/man1/prename.1p.html)
Pad avatar
lá cờ cn
Pad
@steeldriver cảm ơn bạn - cái này hoạt động hoàn hảo `rename -v "_$(date +%Y%m%d)" '' *_*_*.jpg `

Đăng câu trả lời

Hầu hết mọi người không hiểu rằng việc đặt nhiều câu hỏi sẽ mở ra cơ hội học hỏi và cải thiện mối quan hệ giữa các cá nhân. Ví dụ, trong các nghiên cứu của Alison, mặc dù mọi người có thể nhớ chính xác có bao nhiêu câu hỏi đã được đặt ra trong các cuộc trò chuyện của họ, nhưng họ không trực giác nhận ra mối liên hệ giữa câu hỏi và sự yêu thích. Qua bốn nghiên cứu, trong đó những người tham gia tự tham gia vào các cuộc trò chuyện hoặc đọc bản ghi lại các cuộc trò chuyện của người khác, mọi người có xu hướng không nhận ra rằng việc đặt câu hỏi sẽ ảnh hưởng—hoặc đã ảnh hưởng—mức độ thân thiện giữa những người đối thoại.