Cho tôi xem cách bạn sử dụng shell…

Vấn đề hôm nay tôi đặt ra là tôi muốn đổi toàn bộ các file trong thư mục hiện tại có extension là .php5 thành extension .php. Giờ hãy xem ta sử dụng các lệnh shell một cách đơn giản và hiệu quả như thế nào trong trường hợp này:

for old in *.php5; do mv $old `basename $old .php5`.php; done

Để tôi làm rõ một chút về sự kết hợp tuyệt vời trên. Đầu tiên là câu lệnh lặp qua tất cả các file có phần mở rộng (extension) là php5 trong thư mục hiện tại, sau đó là thao tác lần lượt trên từng file. Chẳng hạn file đầu tiên được tìm thấy là file index.php5, thao tác được làm là đổi “index.php5” thành `basename index.ph5 .php5`.php. Trình basename sẽ trả về “index” là phần tên file nằm trước “.php5”, rồi ta thêm “.php” vào để thành “index.php”.

Bây giờ, cũng với vấn đề trên, ai thích cầu kỳ thì vận dụng kiến thức về parameter expansion trong shell ta có thể nâng cao sự kết hợp này để nhìn “pro” hơn một chút:

for old in *.php5; do new=${old/.php5/.php}; mv $old $new; done

và đây là một chút “gian xảo” hơn ;):

for a in *php5 ; do mv $a ${a%%5} ; done

Nếu bạn là người cẩn thận, lo xa, hãy viết những câu lệnh trên vào một file shell script và lưu lại để tiện sử dụng lại nhiều lần. Ngoài ra, với những người có cá tính mạnh, thích khám phá, có hiểu biết về biểu thức chính quy (regular expression), ưa thích SEX, à lộn SED :”> có thể sẽ thấy thoải mái hơn với trình ‘rename’ có sẵn trong các bản Debian based distro:

rename ‘s/\.php5/.php/’ *.php5

Hãy cho tôi xem cách bạn sử dụng shell, tôi sẽ cho biết tính cách của bạn 😉. – (C) 2007, Đông Thao

Đông Thao

Advertisements

About dongthao

"Man does not simply exist but always decides what his existence will be, what he will become the next moment"
This entry was posted in Linux, Linux Tutorial. Bookmark the permalink.

2 Responses to Cho tôi xem cách bạn sử dụng shell…

  1. pclouds says:

    for i in *.php5;do mv “$i” “${i/.php5/.php}”;done

  2. dongthao says:

    parameter expansion 😀

Leave a Reply

Fill in your details below or click an icon to log in:

WordPress.com Logo

You are commenting using your WordPress.com account. Log Out /  Change )

Google+ photo

You are commenting using your Google+ account. Log Out /  Change )

Twitter picture

You are commenting using your Twitter account. Log Out /  Change )

Facebook photo

You are commenting using your Facebook account. Log Out /  Change )

w

Connecting to %s