
Trong Linux, có lệnh Mv để giúp bạn đổi tên file và tệp đơn giản. Sau đây, hãy cùng Followeek khám phá chi tiết cách sử dụng lệnh mv trong môi trường Linux hiệu quả.
Đổi tên một tệp đơn bằng mv
Để sử dụng mv
để đổi tên một loại tệp mv
, khoảng trắng, tên của tệp, khoảng trắng và tên mới mà bạn muốn tệp có. Sau đó nhấn Enter.
Bạn có thể dùng ls
để kiểm tra tệp đã được đổi tên.
mv oldfile.txt newfile.txt
ls *.txt
Đổi tên nhiều tệp bằng mv
Giả sử chúng ta có một thư mục với nhiều loại tệp trong đó, thuộc các loại khác nhau. Một số tệp này có phần mở rộng “.prog”. Chúng tôi muốn đổi tên chúng tại dòng lệnh để chúng có phần mở rộng “.prg”.
ls *.prog -l
Đây là một cách để làm điều đó mà không cần phải viết tệp Bash script thực tế.
for f in *.prog; do mv -- "$f" "${f%.prog}.prg"
DId rằng hoạt động? Hãy kiểm tra các tập tin và xem.
ls *.pr*
Vì vậy, có, nó đã hoạt động. Hiện tại chúng đều là tệp “.prg” và không có tệp “.prog” nào trong thư mục.
Sử dụng lệnh rename
Chắc chắn nhất. Nó là rename
.
rename
không phải là một phần của bản Linux tiêu chuẩn, vì vậy bạn sẽ cần phải cài đặt nó. Nó cũng có một tên khác trong các dòng Linux khác nhau, nhưng chúng đều hoạt động theo cùng một cách. Bạn sẽ chỉ phải thay thế tên lệnh thích hợp theo hương vị Linux mà bạn đang sử dụng.
trong Ubuntu và các bản phân phối bắt nguồn từ Debian mà bạn cài đặt rename
như thế này:
sudo apt-get install rename
Trong các bản phân phối có nguồn gốc từ Fedora và RedHat mà bạn cài đặt prename
như thế này. Lưu ý chữ “p” đầu tiên là viết tắt của Perl.
sudo dnf install prename
Để cài đặt nó trong Manjaro Linux, hãy sử dụng lệnh sau. Lưu ý rằng lệnh đổi tên được gọi là perl-rename
.
sudo pacman -Syu perl-rename
Đổi tệp đơn bằng rename
Và lần này chúng tôi sẽ sử dụng rename
. Chúng tôi sẽ quay ngược đồng hồ để chúng tôi có một tập hợp các tệp “.prog”.
ls *.prog
Bây giờ chúng ta hãy sử dụng lệnh sau để đổi tên chúng. Sau đó chúng tôi sẽ kiểm tra với ls
cho dù nó hoạt động. Nhớ thay thế rename
với tên lệnh thích hợp cho Linux của bạn nếu bạn không sử dụng Ubuntu hoặc Linux có nguồn gốc từ Debian.
rename 's/.prog/.prg/' *.prog
ls *.pr*
Điều đó đã hiệu quả, giờ đây chúng đều là tệp “.prg” và không còn tệp “.prog” nào trong thư mục.
Thay đổi các phần khác của tên tệp
Chúng tôi đã thay đổi phần mở rộng tên tệp cho đến nay, hãy sửa đổi các phần khác của tên tệp.
Trong thư mục có rất nhiều tệp mã nguồn C. Tất cả các tên tệp đều có tiền tố là “slang_”. Chúng tôi có thể kiểm tra điều này với ls
.
ls sl*.c
Chúng tôi sẽ thay thế tất cả các lần xuất hiện của “slang_” bằng “sl_”. Định dạng của lệnh đã quen thuộc với chúng ta. Chúng tôi chỉ thay đổi cụm từ tìm kiếm, cụm từ thay thế và loại tệp.
rename 's/slang_/sl_' *.c
Lần này chúng tôi đang tìm kiếm các tệp “.c” và tìm kiếm “slang_”. Bất cứ khi nào “slang_” được tìm thấy trong tên tệp, nó sẽ được thay thế bằng “sl_”.
Chúng ta có thể kiểm tra kết quả của lệnh đó bằng cách lặp lại lệnh ls
từ trên với các tham số tương tự:
ls sl*.c
Xóa một phần của tên tệp
Chúng tôi có thể xóa một phần của tên tệp bằng cách thay thế cụm từ tìm kiếm bằng không.
ls *.c
rename 's/sl_//' *.c
ls *.c
Chúng ta có thể thấy từ lệnh ls
rằng các tệp “.c” của chúng tôi đều được thêm vào trước bằng “sl_”. Hãy loại bỏ điều đó hoàn toàn.
Các lệnh rename
tuân theo cùng một định dạng như trước. Chúng tôi sẽ tìm kiếm các tệp “.c”. Cụm từ tìm kiếm là “sl_”, nhưng không có cụm từ thay thế. Hai dấu gạch chéo ngược mà không có bất kỳ thứ gì giữa chúng có nghĩa là không có gì, một chuỗi rỗng.
rename
sẽ xử lý lần lượt từng tệp “.c”. Nó sẽ tìm kiếm “sl_” trong tên tệp. Nếu nó được tìm thấy, nó sẽ được thay thế bằng không. Nói cách khác, cụm từ tìm kiếm sẽ bị xóa.
Việc sử dụng thứ hai của ls
lệnh xác nhận rằng tiền tố “sl_” đã bị xóa khỏi mọi tệp “.c”.
Giới hạn các thay đổi đối với các phần cụ thể của tên tệp
Hãy sử dụng ls
để xem các tệp có chuỗi “param” trong tên tệp của chúng. Sau đó, chúng tôi sẽ sử dụng rename
để thay thế chuỗi đó bằng chuỗi “tham số”. Chúng tôi sẽ sử dụng ls
một lần nữa để xem hiệu quả lệnh rename
đã có trên các tệp đó.
ls *param*
rename 's/param/parameter' *.c
ls *param*
Bốn tệp được tìm thấy có “param” trong tên tệp của chúng. param.c, param_one.c và param_two.c đều có “param” tại khởi đầu tên của họ. third_param.c có “param” ở kết thúc tên của nó, ngay trước phần mở rộng.
Các lệnh rename
sẽ tìm kiếm “param” ở mọi nơi trong tên tệp và thay thế nó bằng “tham số” trong mọi trường hợp.
Việc sử dụng thứ hai của lệnh ls
cho chúng ta thấy rằng đó chính xác là những gì đã xảy ra. Cho dù “tham số” ở đầu hay cuối tên tệp, nó đã được thay thế bằng “tham số”.
Chúng ta có thể sử dụng siêu ký tự của Perl để tinh chỉnh hành vi của biểu thức giữa. Metacharacters là ký hiệu đại diện cho vị trí hoặc trình tự của các ký tự. Ví dụ, ^
có nghĩa là “bắt đầu của một chuỗi”, $
có nghĩa là “kết thúc của một chuỗi” và .
nghĩa là bất kỳ ký tự đơn nào (ngoài ký tự dòng mới).
Chúng ta sẽ sử dụng phần bắt đầu của siêu ký tự chuỗi ( ^
) để giới hạn tìm kiếm của chúng tôi ở đầu tên tệp.
ls *param*.c
rename 's/^parameter/value/' *.c
ls *param*.c
ls value*.c
Các tệp chúng tôi đã đổi tên trước đó được liệt kê và chúng ta có thể thấy chuỗi “tham số” nằm ở đầu của ba tên tệp và nó nằm ở cuối một trong các tên tệp.
Của chúng tôi lệnh rename
sử dụng đầu dòng (^
) siêu ký tự trước cụm từ tìm kiếm “tham số”. Điều này nói với rename
để chỉ coi cụm từ tìm kiếm đã được tìm thấy nếu nó ở đầu tên tệp. Chuỗi tìm kiếm “tham số” sẽ bị bỏ qua nếu nó nằm ở bất kỳ vị trí nào khác trong tên tệp.
Kiểm tra với ls
, chúng ta có thể thấy rằng tên tệp có “tham số” tại kết thúc của tên tệp chưa được sửa đổi, nhưng ba tên tệp có “tham số” ở khởi đầu tên của họ đã có chuỗi tìm kiếm được thay thế bằng cụm từ thay thế “giá trị”.
Sức mạnh của rename
nằm ở sức mạnh của Perl. Tất cả sức mạnh của Perl là do bạn sử dụng.
Tìm kiếm với các nhóm
rename
đã có thêm nhiều thủ thuật lên tay áo của nó. Hãy xem xét trường hợp bạn có thể có các tệp có chuỗi tương tự trong tên của chúng. Chúng không hoàn toàn là các chuỗi giống nhau, vì vậy, tìm kiếm và thay thế đơn giản sẽ không hoạt động ở đây.
Trong ví dụ này, chúng tôi sử dụng ls
để kiểm tra xem chúng tôi có tệp nào bắt đầu bằng “str”. Có hai trong số chúng, string.c và Strale.c. Chúng ta có thể đổi tên cả hai chuỗi cùng một lúc bằng cách sử dụng kỹ thuật gọi là nhóm.
Biểu hiện trung tâm của điều này lệnh rename
sẽ tìm kiếm các chuỗi trong tên tệp có chuỗi ký tự “stri” hoặc là “Stra” trong đó các chuỗi đó được theo sau ngay bởi “ng”. Nói cách khác, cụm từ tìm kiếm của chúng tôi sẽ tìm kiếm “strang” và “string”. Thuật ngữ thay thế là “bang”.
ls str*.c
rename 's/(stri|stra)ng/bang/' *.c
ls ban*.c
Sử dụng ls
lần thứ hai xác nhận rằng string.c đã trở thành bang.c và siết chặt.c bây giờ là bangle.c.
Sử dụng bản dịch có đổi tên
Các lệnh rename
có thể thực hiện các hành động trên tên tệp được gọi là bản dịch. Một ví dụ đơn giản về bản dịch là buộc một tập hợp các tên tệp thành chữ hoa.
bên trong lệnh rename
bên dưới thông báo rằng chúng tôi không sử dụng s/
để bắt đầu biểu thức trung tâm, chúng tôi đang sử dụng y/
. Điều này nói với rename
chúng tôi không thực hiện thay thế; chúng tôi đang thực hiện một bản dịch.
Các thuật ngữ a-z
là một biểu thức Perl có nghĩa là tất cả các ký tự viết thường trong dãy từ a đến z. Tương tự, thuật ngữ A-Z
đại diện cho tất cả các chữ cái viết hoa trong dãy từ A đến Z.
Biểu thức trung tâm trong lệnh này có thể được diễn giải như “nếu tìm thấy bất kỳ chữ cái thường nào từ a đến z trong tên tệp, hãy thay thế chúng bằng các ký tự tương ứng từ chuỗi ký tự viết hoa từ A đến Z.”
Để buộc tên tệp của tất cả các tệp “.prg” thành chữ hoa, hãy sử dụng lệnh sau:
rename ‘y/a-z/A-Z/’ *.prg
ls *.PRG
Các ls
lệnh cho chúng ta thấy rằng tất cả các tên tệp “.prg” hiện đều ở dạng chữ hoa. Trên thực tế, chính xác một cách nghiêm túc, chúng không phải là tệp “.prg” nữa. Chúng là các tệp “.PRG”. Linux phân biệt chữ hoa chữ thường.
Chúng ta có thể đảo ngược lệnh cuối cùng đó bằng cách đảo ngược vị trí của a-z
và A-Z
các thuật ngữ trong biểu thức trung tâm.
rename ‘y/A-Z/a-z/’ *.PRG
ls *.prg
Hy vọng rằng bài viết này đã giúp ích được cho bạn! Followeek chúc bạn một ngày mới tốt lành.
Để lại một phản hồi