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

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).

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ứ Hai, 23/07/2018 13:51
51 👨 1.569