Cách sao chép và đổi tên file trong Linux

Có nhiều cách để sao chép và đổi tên các file trên Linux hơn là chỉ dùng lệnh cp và mv. Hãy thử một số lệnh và các cách khác được gợi ý dưới đây. Chúng có thể làm bạn ngạc nhiên và tiết kiệm khá nhiều thời gian cho bạn đấy.

Người dùng Linux trong nhiều thập kỷ đã sử dụng lệnh cpmv đơn giản để sao chép và đổi tên file. Các lệnh cp và mv là những lệnh đầu tiên mà hầu hết chúng ta được học và sử dụng hàng ngày. Nhưng có các kỹ thuật, các biến thể tiện dụng và một số lệnh khác để đổi tên các file, cũng như cung cấp một số tùy chọn nhất định.

Cách sao chép file trong Linux

Trước tiên, hãy suy nghĩ về lý do tại sao bạn muốn sao chép file. Bạn có thể cần cùng một file ở một vị trí khác hoặc bạn có thể muốn tạo một bản sao trước khi bạn chỉnh sửa file để sử dụng trong trường hợp bạn cần hoàn nguyên về file gốc. Cách hiển nhiên để làm điều đó là sử dụng một lệnh như “cp myfile myfile-orig”.

Tuy nhiên, nếu bạn muốn sao chép một số lượng lớn file, thì phương pháp này sẽ không phù hợp. Lựa chọn thay thế tốt hơn là:

  • Sử dụng lệnh tar để tạo bản lưu trữ của tất cả các file bạn muốn sao lưu trước khi bạn bắt đầu chỉnh sửa chúng.
  • Sử dụng vòng lặp for để tạo các bản sao lưu dễ dàng hơn.

Tùy chọn tar rất đơn giản. Đối với tất cả các file trong thư mục hiện hành, bạn sẽ sử dụng lệnh như sau:

$ tar cf myfiles.tar *

Đối với một nhóm file mà bạn có thể xác định bằng mẫu, bạn sẽ sử dụng lệnh như sau:

$ tar cf myfiles.tar *.txt

Trong trường hợp đầu bạn sẽ tạo được một file myfiles.tar, chứa tất cả các file trong thư mục. Trong trường hợp thứ hai, file myfiles.tar sẽ chứa tất cả các file có phần mở rộng .txt.

Sử dụng vòng lặp như dưới đây sẽ giúp tạo các bản sao lưu với tên đã được sửa đổi:

$ for file in *
> do
> cp $file $file-orig
> done

Khi bạn sao lưu một file và file đó có tên rất dài, bạn có thể dựa vào việc sử dụng lệnh tab để sử dụng tính năng Filename completion (hoàn thành tên file) bằng cách nhấn phím tab sau khi nhập tên file và sử dụng cú pháp như thế này để thêm "-orig" vào bản sao.

$ cp file-with-a-very-long-name{,-orig}

Sau đó, bạn có 2 tên file dạng như sau:

x-x-x-x-x-x-x-x-x-x-x-x và x-x-x-x-x-x-x-x-x-x-x-x-orig.

Cách đổi tên file trong Linux

Phương pháp 1: Sử dụng lệnh "mv"

Cách truyền thống để đổi tên một file là sử dụng lệnh mv. Lệnh này sẽ di chuyển một file vào một thư mục khác, thay đổi tên của nó và để nó ở một vị trí nào đó.

$ mv myfile /tmp
$ mv myfile notmyfile
$ mv myfile /tmp/notmyfile

Nhưng bây giờ chúng ta đã có nhiều lệnh rename khác để thực hiện một số thay đổi tên file quan trọng. Bí quyết sử dụng lệnh rename là làm quen với cú pháp của nó, nhưng nếu bạn biết một chút về ngôn ngữ lập trình perl, bạn có thể không thấy nó phức tạp chút nào cả.

Đây là một ví dụ rất hữu ích. Giả sử bạn muốn đổi tên các file trong thư mục để thay thế tất cả các chữ hoa bằng chữ thường. Nói chung, thường thì bạn sẽ không tìm thấy nhiều file có chữ hoa trên hệ thống Unix hoặc Linux, nhưng đôi khi điều này có thể xảy ra. Dưới đây là một cách dễ dàng để đổi tên chúng mà không phải sử dụng lệnh mv cho từng file một. Thông số /A-Z/a-z/ cho biết lệnh rename nhằm thay đổi bất kỳ chữ cái nào trong phạm vi A-Z thành các chữ cái tương ứng trong a-z.

$ ls
Agenda Group.JPG MyFile
$ rename 'y/A-Z/a-z/' *
$ ls
agenda group.jpg myfile

Bạn cũng có thể sử dụng lệnh rename để xóa phần mở rộng file. Có thể bạn thấy không thoải mái với các file văn bản có đuôi .txt. Đơn giản chỉ cần loại bỏ chúng bằng một lệnh như sau:

$ ls
agenda.txt notes.txt weekly.txt
$ rename 's/.txt//' *
$ ls
agenda notes weekly

Bây giờ, hãy tưởng tượng bạn thay đổi suy nghĩ và muốn đặt lại phần mở rộng file. Không vấn đề gì. Chỉ cần thay đổi lệnh. Bí quyết là hiểu rằng "s" trước dấu gạch chéo đầu tiên có nghĩa là "substitute” (thay thế). Giữa hai dấu gạch chéo đầu tiên là những gì bạn muốn thay đổi. Giữa hai dấu gạch chéo thứ hai và thứ ba là những gì bạn muốn thay đổi thành. Vì vậy, $ đại diện cho phần cuối của tên file và ta sẽ đổi tên thành “.txt”.

$ ls
agenda notes weekly
$ rename 's/$/.txt/' *
$ ls
agenda.txt notes.txt weekly.txt

Bạn cũng có thể thay đổi các phần khác của tên file. Giữ nguyên quy tắc s/old/new/.

$ ls
draft-minutes-2018-03 draft-minutes-2018-04 draft-minutes-2018-05
$ rename 's/draft/approved/' *minutes*
$ ls
approved-minutes-2018-03 approved-minutes-2018-04 approved-minutes-2018-05

Lưu ý: Trong các ví dụ ở trên mà khi chúng ta sử dụng một s như trong "s/old/new/", chúng ta sẽ thay thế một phần của tên này bằng tên khác. Khi sử dụng y, tức là bạn đang chuyển ngữ (thay thế các ký tự từ một phạm vi này sang phạm vi khác).

Phương pháp 2: Sử dụng lệnh "rename"

Sử dụng lệnh đổi tên “rename” để đổi tên tệp trong Linux là một phương pháp có phần “nâng cao” hơn một chút so với cách sử dụng lệnh “mv” phía trên. Điều này nghe có vẻ “đáng sợ”, nhưng thực ra không quá khó nếu bạn có kiến thức về Linux. Cách thực hiện như sau.

Lưu ý rằng trên nhiều bản phân phối Linux, lệnh “rename” này có thể không khả dụng theo mặc định. Trong trường hợp này, bạn sẽ cần tiến hành cài đặt nó thủ công.

Trong Debian Linux, hãy nhập lệnh sau vào terminal:

sudo apt install rename

Trong Arch Linux:

sudo pacman -S rename

Cú pháp rename về cơ bản sẽ trông như thế này:

rename (option) 's/oldname/newname/' file1.ext file24.ext

Chữ cái "s" là viết tắt của "substitute” (thay thế), và là phần chính của biểu thức. Các dấu ngoặc kép xung quanh nó là bắt buộc. Một số tùy chọn có sẵn bao gồm:

  • -v (verbose: in danh sách các tệp được đổi tên cùng với tên mới của chúng)
  • -n (“no action:” chế độ thử nghiệm hoặc mô phỏng, chỉ hiển thị các tệp sẽ được thay đổi mà không cần can thiệp vào chúng)
  • -f (“forced”: buộc ghi đè lên các tệp gốc)

Lệnh rename cũng chấp nhận các ký tự đại diện để đổi tên nhiều tệp cùng loại, và đồng thời nó cũng hoạt động trên cả phần mở rộng tệp. Ví dụ: Biểu thức lệnh này sẽ thay đổi tất cả các tệp có phần mở rộng .jpeg thành .jpg:

rename 's/.jpeg/.jpg/' *

Ký tự đại diện (*) có nghĩa là tất cả các tệp trong thư mục sẽ trong tầm ảnh hưởng của lệnh.

Ngoài ra, cũng sẽ có các tùy chọn (bổ ngữ) riêng cho biểu thức. Chẳng hạn: “g” (global: ảnh hưởng đến tất cả các lần xuất hiện của biểu thức), và “i” (thực hiện thay thế phân biệt chữ hoa - chữ thường). Chúng được viết ở cuối biểu thức ngay trước dấu ngoặc kép đóng và có thể được sử dụng kết hợp với nhau:

rename -n 's/DSC/photo/gi' *.jpg

Lệnh trên sẽ áp dụng cho tất cả các tệp .jpg có chứa “DSC,” “dSC” và “dsc” - thay đổi phần này của tên tệp thành “photo”. Tuy nhiên, do có tùy chọn “-n”, lệnh sẽ không thực sự đổi tên tệp mà chỉ in chúng trong cửa sổ bảng điều khiển.

Ngoài ra còn có tùy chọn “translation” - được đánh dấu bằng chữ cái “y” - có thể biến đổi tên tệp ở mức độ phức tạp hơn. Tùy chọn này thường được sử dụng để thay đổi tên tệp từ chữ thường sang chữ in hoa:

rename 'y/a-z/A-Z/' *.jpg

Lệnh trên sẽ thay đổi tên của tất cả các tệp .jpg từ chữ thường sang chữ hoa. Để làm ngược lại, chỉ cần hoán đổi phần "oldname" và "newname" trong biểu thức lệnh.

Phương pháp 3: Sử dụng tiện ích Métamorphose2

Métamorphose là một công cụ đổi tên tệp hàng loạt đa nền tảng khá hữu ích. Đối với những người thích sử dụng một công cụ GUI để thực hiện các thao tác đổi tên, Métamorphose là sự lựa chọn tuyệt vời. Ứng này này hiện có sẵn cho cả Windows và Linux.

Để bắt đầu, hãy truy cập trang web của Métamorphose2 và tải xuống tệp cài đặt tương ứng cho bản phân phối của bạn.

Sau khi bạn chạy ứng dụng, tab “Picker” sẽ được hiển thị đầu tiên. Đây là nơi bạn có thể chọn thư mục chứa các tệp mà mình muốn đổi tên hàng loạt. Lưu ý rằng Métamorphose2 sẽ chỉ hỗ trợ thao tác đổi tên hàng loạt trên một thư mục một lúc.

Tab “Picker

Sau khi chọn thư mục, bạn nhấp vào tab “Renamer”. Từ đây, bạn có thể quyết định các quy tắc đổi tên mà mình muốn.

Trên ngăn bên trái, bạn có thể chọn hành động mà mình muốn thực hiện. Ví dụ: “insert” sẽ chèn các thuật ngữ vào tên, trong khi “length” cho phép bạn sắp xếp tên tệp thành một số ký tự. Ngoài ra còn có các tùy chọn "move text", "replace" và "modify", tương ứng với một số tùy chọn nâng cao để bạn đổi tên tệp triệt để hơn.

Tab “Renamer”

Cuối cùng, chỉ cần nhấp vào nút “Go” ở đầu ngăn dưới cùng để bắt đầu quá trình đổi tên. Nếu bạn tìm thấy bất kỳ lỗi nào sau khi đổi tên, sẽ có tùy chọn Undo để hoàn nguyên tất cả các thay đổi.

Có rất nhiều tùy chọn để sao chép và đổi tên file trong Linux. Hãy tìm ra một phương án thích hợp nhất cho bạn. Chúc bạn thành công!

Xem thêm:

Thứ Bảy, 07/07/2018 10:36
52 👨 15.719
0 Bình luận
Sắp xếp theo
    ❖ Linux