Cách đổi tên một nhóm tệp với đường dẫn giống như tệp Windows trong tên của chúng


9

Tôi nhận được một loạt các tập tin với tên tập tin bị rối tung. Tất cả các tên tệp có cùng một khởi đầu dường như là các thư mục tệp windows. Vấn đề là có hơn 700 tệp và tôi thực sự không muốn xem qua và tự đổi tên tất cả chúng. Đây là ví dụ về tên tệp (Lưu ý: Không ai trong số này có thư mục tệp):

G:some\really\long\file\path\then\the\name1.jpg
G:some\really\long\file\path\then\the\name2.png
G:some\really\long\file\path\then\the\filename.txt
G:some\really\long\file\path\then\the\file_name.mov
...

Điều quan trọng mang đi là mỗi tệp có G:some\really\long\file\path\then\the\trước tên tệp mà tôi muốn.

Vì vậy, tôi muốn các tập tin trên trông giống như:

name1.jpg
name2.png
filename.txt
file_name.mov

Tôi đã thử renamelệnh và không thành công. Tôi vẫn còn mới với Linux và thực sự không chắc chắn về cách đi về nó hoặc thực sự những gì để google. Bất kỳ trợ giúp sẽ được đánh giá cao.

Câu trả lời:


18

Tôi vừa xóa tất cả mọi thứ cho đến dấu gạch chéo cuối cùng với rename

$ rename -n 's/.*\\//' G*
rename(G:some\really\long\file\path\then\the\file_name.mov, file_name.mov)
rename(G:some\really\long\file\path\then\the\filename.txt, filename.txt)
rename(G:some\really\long\file\path\then\the\name1.jpg, name1.jpg)
rename(G:some\really\long\file\path\then\the\name2.png, name2.png)

Loại bỏ -nsau khi thử nghiệm để thực sự đổi tên các tập tin.

Ghi chú

  • -n không làm gì cả, chỉ in những gì sẽ thay đổi
  • s/old/newthay thế oldbằngnew
  • .* bất kỳ số lượng của bất kỳ nhân vật
  • \\ Dấu gạch chéo đầu tiên là để thoát khỏi cái thứ hai.
  • Vì regex rất tham lam nên biểu thức này cũng .*\\ăn tất cả các dấu gạch chéo ngược trước đó.
  • Vì hai dấu phân cách cuối cùng //trống nên mọi thứ khớp trong phần tìm kiếm sẽ bị xóa

Tôi chỉ cần dòng đầu tiên, hay tôi cần làm điều đó cho mọi tập tin?
kingcobra1986

bạn chỉ cần dòng đầu tiên @ kingcobra1986 những cái khác chỉ là đầu ra. *phù hợp với tất cả các tệp nhưng hãy để tôi thay đổi thành G*- thực hiện - vì vậy bây giờ nó khớp với tất cả các tệp bắt đầu Gtrong thư mục hiện tại và sẽ hoạt động trên tất cả chúng cùng một lúc. Nếu chúng nằm trong nhiều thư mục, chúng ta cũng có thể xử lý vấn đề đó theo nhiều cách khác nhau
Zanna

Điều đó đã làm việc. Bạn có thể giải thích chính xác những gì xảy ra trong dòng đó?
kingcobra1986

1
@ kingcobra1986 xin lỗi, tôi đã thêm ghi chú. Hy vọng nó rõ ràng, nếu không, xin vui lòng yêu cầu thêm!
Zanna

Ha, tôi thích ý tưởng sử dụng .*\\ từ khi tham lam.*
Ziazis

10

Bạn có thể làm điều này trong thuần bashbằng cách sử dụng mở rộng tham số shell .

${file##*\\}(cut-up-to-last-prefix) tước mọi thứ từ đầu tên tệp cho đến lần cuối \nhìn thấy.

for file in *; do
    mv -v "$file" "${file##*\\}";
done

Kết quả đổi tên là:

‘G:some\\really\\long\\file\\path\\then\\the\\file_name.mov’ -> ‘file_name.mov’
‘G:some\\really\\long\\file\\path\\then\\the\\filename.txt’ -> ‘filename.txt’
‘G:some\\really\\long\\file\\path\\then\\the\\name1.jpg’ -> ‘name1.jpg’
‘G:some\\really\\long\\file\\path\\then\\the\\name2.png’ -> ‘name2.png’

6

Nếu bạn đang tìm kiếm giải pháp GUI , có rất nhiều ứng dụng đổi tên hàng loạt. Tôi muốn đề xuất Thunar , trình quản lý tệp mặc định cho Xfce. Nó đi kèm với một công cụ đổi tên hàng loạt tiện dụng. Bạn có thể cài đặt Thunar bằng cách chạy lệnh sau trong Terminal:

sudo apt-get install thunar

Có lẽ bạn cũng sẽ có thể cài đặt từ Phần mềm Ubuntu.

Cách sử dụng tiện ích

  1. Khi bạn đã cài đặt Thunar, hãy khởi chạy tiện ích Đổi tên hàng loạt .
  2. Nhấp vào biểu tượng + và thêm các tệp bạn muốn đổi tên.
  3. Nhấp vào hộp thả xuống ngay bên dưới danh sách các tệp đã chọn và chọn Tìm kiếm & Thay thế .
  4. Trong hộp Tìm kiếm: nhập G:some\really\long\file\path\then\the\(phần bạn muốn loại bỏ), để trống ô Thay thế bằng : . Bạn sẽ thấy bản xem trước của các thay đổi trong cột Tên mới .
  5. Để áp dụng các thay đổi, nhấp vào nút Đổi tên tệp .

Bên cạnh Tìm kiếm & Thay thế tiện ích này hỗ trợ các hành động sau:

  • Chèn ngày / giờ
  • Chèn / ghi đè
  • Đánh số
  • Xóa ký tự
  • Chữ in hoa chữ thường

không có cái nào cho nautilus (tôi nghĩ là có!)? Có vẻ khá quá mức để đề nghị cài đặt một trình duyệt tệp mới cho mục đích này.
Zanna

@Zanna Có một trong v3.22, nhưng tôi nghĩ vẫn chưa có trong repos Ubuntu.
pomsky

2
Thunar khá tiện dụng và dường như cùng tồn tại tốt với các trình duyệt tệp khác, vì vậy tôi nghĩ có thể đáng để cài đặt nó cho mục đích này. Nhưng bạn có thể mở rộng câu trả lời này với lời giải thích về cách thực hiện đổi tên hàng loạt trong Thunar không?
Eliah Kagan

1
@EliahKagan và nó cũng rất nhẹ
pomsky

Hoàn thành tốt, bây giờ tôi có thể nâng cấp (Tôi đã có Xubfox. Tôi cũng có thể kiểm tra nó :))
Zanna
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.