Important! This is an automatic machine translated page. If you can read english, you should Click Here to read the original English version of the article.

Shell Geek: Rename Multiple Files At Once Shell Geek: Đổi tên tập tin Tại Nhiều Khi

Let's say you have a directory with hundreds of files with the wrong file names, and you'd like to replace every filename containing test with prod . Hãy nói rằng bạn có một thư mục với hàng trăm tập tin với tên tập tin sai, và bạn muốn thay thế mỗi khi thử nghiệm có chứa tên tập tin với prod. (this is a contrived example). (đây là một ví dụ contrived). We can easily do this with the “for” command in bash, combined with a little bit of bash goodness. Chúng ta có thể dễ dàng làm được điều này với sự "cho" lệnh trong bash, kết hợp với một chút lòng tốt bash. Today we'll learn how to replace text in a variable in a for loop. Hôm nay chúng tôi sẽ tìm hiểu làm thế nào để thay thế văn bản trong một biến trong một cho vòng lặp.

The “for” command works like this: Việc "cho" lệnh công trình như thế này:

for var in <files>;do <command> $var;done cho var trong <files>; làm <command> $ var; thực hiện

You can replace <files> with any file match pattern, such as * or *.txt, and you can replace <command> with any linux command. Bạn có thể thay thế <files> với bất kỳ mẫu phù hợp với tập tin, chẳng hạn như * hoặc *. txt, và bạn có thể thay thế <command> với bất kỳ lệnh Linux. The command will be run in sequence on each of the files matched by the file match pattern. Lệnh này sẽ được chạy theo thứ tự trên mỗi của các tập tin bằng cách kết hợp các mô hình kết hợp tập tin.

This is where the bash variable handling makes it even more interesting. Đây là nơi xử lý bash biến làm cho nó thậm chí thú vị hơn. Instead of just doing something like “mv $var”, we can replace text in the filename using this syntax: Thay vì chỉ làm một cái gì đó như "mv $ var", chúng tôi có thể thay thế văn bản trong tên tập tin này bằng cách sử dụng cú pháp:

${var/originaltext/replacetext} $ (var / originaltext / replacetext)

So now, if we run this command on our directory: Vì vậy, bây giờ, nếu chúng ta chạy lệnh này vào thư mục của chúng tôi:

for f in *;do mv $f ${f/test/prod};done cho f trong *; làm mv $ f $ (f / thử nghiệm / prod); thực hiện

For each file matched by *, bash will execute a command similar to this: Đối với mỗi tập tin phù hợp bởi *, bash sẽ thực thi một lệnh tương tự như sau:

mv test.config prod.config mv test.config prod.config

I've found that knowledge of the shell is invaluable when administering servers or just for managing your file collection, and has saved me hours of what would have otherwise been manual work. Tôi đã nhận thấy rằng kiến thức của vỏ là vô giá khi quản trị các máy chủ hoặc chỉ dành cho việc quản lý thu tập tin của bạn, và đã lưu lại những gì tôi giờ đã có thể làm việc nếu không được hướng dẫn sử dụng.

And yes, I realize there are a number of tools that can accomplish renaming of multiple files. Và có, tôi nhận thấy có một số công cụ có thể thực hiện đổi tên nhiều file.

This article was originally written on 07/17/07 Tagged with: Bài viết này ban đầu được viết ngày 07/17/07 Tagged với: Ubuntu Ubuntu

Daily Email Updates Email cập nhật hàng ngày

You can get our how-to articles in your inbox each day for free. Bạn có thể làm thế nào chúng tôi vào các bài viết trong hộp thư của bạn mỗi ngày miễn phí. Just enter your name and email below: Chỉ cần nhập tên và email của bạn dưới đây:


Name: Tên:
Email: Email:

Comments (5) Comment (5)

  1. skeptic hoài nghi

    thanks, really nice article, it has saved me some time and it will alot more in the future. thanks, thật sự tốt đẹp bài viết, nó đã lưu lại cho tôi một số thời gian và nó sẽ được nhiều hơn trong tương lai.

  2. sachadon sachadon

    Hey… thanks a lot for this article … this really saved lot of my time …. Hey ... cảm ơn rất nhiều cho bài này ... này thực sự đã lưu nhiều thời gian của tôi .... i reallly appreciate it … i reallly appreciate it ...

  3. felipe alvarez Felipe Alvarez

    You are a GOD. Bạn là một GOD. This is what I have been looking for. Đây là những gì tôi đã được tìm kiếm. Can this functionality exist outside of “for loop”. Chức năng này có thể tồn tại bên ngoài "cho vòng lặp". How good is Bash's regex engine? Làm thế nào tốt là động cơ regex Bash không? Is it full featured? Có đầy đủ tính năng?

    “ls [^a}*” finds all files that begin with anything BUT letter “a”. "Ls [^ a) *" thấy tất cả các file bắt đầu với chữ NHƯNG bất cứ điều gì "a". What else is possible? Gì khác là có thể?

  4. Keith Keith

    This is great, and I use it frequently for changing filename suffixes. Điều này là rất lớn, và tôi dùng nó thường xuyên thay đổi hậu tố tên tập tin.

    However, if you are stuck with filenames that contain spaces, you need to quote around the variable and the replacement expression, as shown in the example below. Tuy nhiên, nếu bạn đang mắc kẹt với tên tập tin có chứa dấu cách, bạn cần phải báo xung quanh biến và biểu thức thay thế, như trong ví dụ dưới đây.

    for f in *;do mv “$f” “${f/\.oga/.ogg}”;done cho f trong *; làm mv "$ f" "$ (f / \ .oga / .ogg)"; thực hiện

  5. scripter scripter

Leave a Comment Để lại một Thảo luận




Leave your Để lại của bạn friendly thân thiện comment here. bình luận ở đây.

If you have a computer help question, Nếu bạn có một câu hỏi giúp máy tính, click here to leave it on the forums bấm vào đây để lại nó trên các diễn đàn instead. thay vì.

Note: Your comment may not show up immediately on the site. Lưu ý: Ý kiến của bạn có thể không hiển thị ngay lập tức trên trang web.

Our Friends Bạn bè của chúng tôi
Getting Started Bắt đầu


About How-To Geek Giới How-To Geek
What Is That Process? Quá trình đó là gì?
svchost.exe svchost.exe
jusched.exe jusched.exe
dwm.exe dwm.exe
ctfmon.exe ctfmon.exe
wmpnetwk.exe wmpnetwk.exe
wmpnscfg.exe wmpnscfg.exe
rundll32.exe rundll32.exe
wfcrun32.exe wfcrun32.exe
Ipoint.exe Ipoint.exe
Itype.exe Itype.exe
Wfica32.exe Wfica32.exe
Mobsync.exe Mobsync.exe
conhost.exe conhost.exe
Dpupdchk.exe Dpupdchk.exe Adobe_Updater.exe Adobe_Updater.exe

Copyright © 2006-2009 HowToGeek.com. Bản quyền © 2006-2009 HowToGeek.com. All Rights Reserved. Tất cả các quyền.