banner

[Rule] Rules  [Home] Main Forum  [Portal] Portal  
[Members] Member Listing  [Statistics] Statistics  [Search] Search  [Reading Room] Reading Room 
[Register] Register  
[Login] Loginhttp  | https  ]
 
Forum Index Thảo luận hệ điều hành *nix Hỏi về một bài bash shell  XML
  [Question]   Hỏi về một bài bash shell 24/09/2009 01:59:08 (+0700) | #1 | 193830
mr.khungxox
Member

[Minus]    0    [Plus]
Joined: 23/06/2007 13:43:16
Messages: 117
Offline
[Profile] [PM]
em sài fedora 11 viết một chương trình bash shell :
Viêt́ chương trình shell liêṭ kê cać tâp̣ tin trong thư muc̣ nhâp̣ có kích thước lớn hơn > 4KB theo dạng sau :
Tổng số tâp̣ tin
Tập tin 1 kích thước
.....
tập in n kích thước
Code:
#!/bin/bash
folder=$1
index=0
for file in $( find $folder -type f)
do
        filesize=$( ls -l $file | awk '{print $5}')
        echo "Process $file --$filesize"

        if [ $filesize-gt$size ]; then
                _fileName[$index]=$file
                _filesize[$index]=$filesize
                let "index=index+1"
        fi
done

echo "so luong tap tin: $index"

for((i=0;i<index;i++))
do
        echo -e "`basename ${_fileName[i]}`   -- siz: ${_filesize[i]}"
done
exit 0

kết quả :chẳng biết chỗ so sánh -gt của em sai như thế nào mà mấy tập tin có kích thước nhỏ 143(<4096) mà nó vẫn hiện ra nữa .
Code:
[root@localhost shell]# ./dstaptin.sh
Process ./3.sh --143
Process ./1.sh --201
Process ./5.sh --129
Process ./2.sh --38
Process ./dstaptin.sh --411
so luong tap tin: 5
3.sh   -- siz: 143
1.sh   -- siz: 201
5.sh   -- siz: 129
2.sh   -- siz: 38
dstaptin.sh   -- siz: 411
[root@localhost shell]#


Mong ai biết giúp với, cám ơn nhiều.

[Up] [Print Copy]
  [Question]   Hỏi về một bài bash shell 24/09/2009 02:12:54 (+0700) | #2 | 193832
[Avatar]
quanta
Moderator

Joined: 28/07/2006 14:44:21
Messages: 7265
Location: $ locate `whoami`
Offline
[Profile] [PM]
$size lấy giá trị từ đâu vậy?
Let's build on a great foundation!
[Up] [Print Copy]
  [Question]   Hỏi về một bài bash shell 24/09/2009 02:36:33 (+0700) | #3 | 193833
mr.khungxox
Member

[Minus]    0    [Plus]
Joined: 23/06/2007 13:43:16
Messages: 117
Offline
[Profile] [PM]
xin lỗi em copy thiếu :
Code:
#!/bin/bash

size=4096

 folder=$1
 index=0
 for file in $( find $folder -type f)
 do
         filesize=$( ls -l $file | awk '{print $5}')
         echo "Process $file --$filesize"
 
         if [ $filesize-gt$size ]; then
                 _fileName[$index]=$file
                 _filesize[$index]=$filesize
                 let "index=index+1"
         fi
 done
 
 echo "so luong tap tin: $index"
 
 for((i=0;i<index;i++))
 do
         echo -e "`basename ${_fileName[i]}`   -- siz: ${_filesize[i]}"
 done
 exit 0
>
[Up] [Print Copy]
  [Question]   Hỏi về một bài bash shell 24/09/2009 02:47:04 (+0700) | #4 | 193835
[Avatar]
quanta
Moderator

Joined: 28/07/2006 14:44:21
Messages: 7265
Location: $ locate `whoami`
Offline
[Profile] [PM]
Sửa dòng này:
if [ $filesize-gt$size ]; then

thành:
if [ $filesize -gt $size ]; then

PS:
- nhìn thấy coding convention của bạn luộm thuộm quá.
- Nếu là mình, mình sẽ đặt tiêu đề là: "Shell script - toán tử -gt (greater than) không làm việc?"

Let's build on a great foundation!
[Up] [Print Copy]
  [Question]   Hỏi về một bài bash shell 24/09/2009 03:11:55 (+0700) | #5 | 193837
mr.khungxox
Member

[Minus]    0    [Plus]
Joined: 23/06/2007 13:43:16
Messages: 117
Offline
[Profile] [PM]
Cảm ơn anh. lần sau em sẽ cố gắng đặt tiêu đề cho đúng hơn.
[Up] [Print Copy]
  [Question]   Hỏi về một bài bash shell 24/09/2009 12:56:23 (+0700) | #6 | 193866
Mr.Khoai
Moderator

Joined: 27/06/2006 01:55:07
Messages: 954
Offline
[Profile] [PM]
mr.khungxox,

Thử "man find" để ... đỡ phải viết shell smilie

khoai
[Up] [Print Copy]
[digg] [delicious] [google] [yahoo] [technorati] [reddit] [stumbleupon]
Go to: 
 Users currently in here 
1 Anonymous

Powered by JForum - Extended by HVAOnline
 hvaonline.net  |  hvaforum.net  |  hvazone.net  |  hvanews.net  |  vnhacker.org
1999 - 2013 © v2012|0504|218|