Wednesday, November 5, 2008

Freebsd Hw3_2

Requirement:

Change filename extensionddddd

Change all files' filename's extension.

操作如下 :

testpc [~/temp/tmp] -testpc-> ls -l
total 12
-rw-r--r-- 1 testpc testpc 2 10 31 19:36 1.test
-rw-r--r-- 1 testpc testpc 2 10 31 19:36 2.test
-rw-r--r-- 1 testpc testpc 2 10 31 19:36 3.test
-rw-r--r-- 1 testpc testpc 2 10 31 19:36 4.test
-rw-r--r-- 1 testpc testpc 2 10 31 19:36 5.test
drwxr-xr-x 2 testpc testpc 512 11 1 14:18 subdir/
testpc [~/temp/tmp] -testpc-> cd subdir/
testpc [~/temp/tmp/subdir] -testpc-> ls -l
total 10
-rw-r--r-- 1 testpc testpc 3 10 31 19:37 1.test
-rw-r--r-- 1 testpc testpc 2 10 31 19:37 2.test
-rw-r--r-- 1 testpc testpc 2 10 31 19:37 3.test
-rw-r--r-- 1 testpc testpc 2 10 31 19:37 4.test
-rw-r--r-- 1 testpc testpc 2 10 31 19:37 5.test

執行我的程式:
testpc [~/temp] -testpc-> sh helpme.sh -t doc -d /home/testpc/temp -f test
-t 是 newExt,想要變更的副檔名
-d 是 targetDirectory, 指定更換副檔名的目錄
-f 是 oriExt, 要變更的副檔名

當執行完畢,成果如下:
testpc [~/temp/tmp] -testpc-> ls -l
total 12
-rw-r--r-- 1 testpc testpc 2 10 31 19:36 1.doc
-rw-r--r-- 1 testpc testpc 2 10 31 19:36 2.doc
-rw-r--r-- 1 testpc testpc 2 10 31 19:36 3.doc
-rw-r--r-- 1 testpc testpc 2 10 31 19:36 4.doc
-rw-r--r-- 1 testpc testpc 2 10 31 19:36 5.doc
drwxr-xr-x 2 testpc testpc 512 11 1 14:18 subdir/
testpc [~/temp/tmp] -testpc-> cd subdir/
testpc [~/temp/tmp/subdir] -testpc-> ls -l
total 10
-rw-r--r-- 1 testpc testpc 3 10 31 19:37 1.doc
-rw-r--r-- 1 testpc testpc 2 10 31 19:37 2.doc
-rw-r--r-- 1 testpc testpc 2 10 31 19:37 3.doc
-rw-r--r-- 1 testpc testpc 2 10 31 19:37 4.doc
-rw-r--r-- 1 testpc testpc 2 10 31 19:37 5.doc

Solution:




#!/bin/sh
while [ $1 ]
do
case $1 in
-t) #echo New Extension
shift
newExt=$1
;;

-d) #echo Target Directory
shift
targetDir=$1
;;

-f) #echo Original Extension
shift
oriExt=$1
;;

*) echo Sorry i cannot understand "<$1>";;
esac
shift
done

echo Target Directory : $targetDir
echo Original Extension : $oriExt
echo New Extension : $newExt

for file in `find "$targetDir" -name "*.$oriExt"`
do
mv "$file" "${file%.$oriExt}.$newExt"
done

0 comments:

Post a Comment