2013-04-22 52 views
0

我想根據每個文件夾中以相同的兩個字母開頭的文件數做不同的操作---如果TS中的文件小於或等於6一組動作和否則再做另一組 我的數據是這樣的如果取決於每個文件夾的文件數--unix

files/TS01 -- which has 2 files 
files/TS02 -- which has 5 files 
files/TS03 -- which has 2 files 
files/TS04 -- which has 7 files 
files/TS05 -- which has 9 files 

我已經試過

FILES="$TS*" 
for W in $FILES 
do 
    doc=$(basename $W) 
    if [ $W -le 6 ] 
    then 
    .... 
    done ... 
    fi 
done 

,但我得到一個錯誤說「整數表達式預期」

我試圖

if [ ls $W -le 6 ] 

我得到另一個錯誤回報說:「太多的參數」

能否請你幫

回答

2

爲了得到線我會建議管道ls -l命令進入廁所的數量 - L,這將吐出的行數在目錄如下...

Atlas $ ls -l | wc -l 
    19 

我做了一個小腳本,它展示瞭如何再利用這個結果conditi onally做一件事或其他...

#!/bin/bash 

amount=$(ls -l | wc -l) 

if [ $amount -le 5 ]; then 
    echo -n "There aren't that many files, only " 
else 
    echo -n "There are a lot of files, " 
fi 

echo $amount 

當一個文件夾上與之呼應19個文件執行..

Atlas $ ./howManyFiles.sh 
    There are a lot of files, 19 

和一個用不到5個文件...

Atlas $ ./howManyFiles.sh 
    There aren't that many files, only 3 

希望這會有助於向您展示如何從文件夾獲取可用的文件數,然後如何在「if」語句中使用這些結果!

+0

我不會設法得到您呈現的結果,我正在編輯以提出問題以顯示數據結構 – 2013-04-22 20:05:30

+0

當您運行ls -l | wc -l在目錄上? – 2013-04-22 20:09:15

+0

我正在運行這裏面的子目錄,當我運行,我給我的主目錄中的文件數量,它不會通過循環---我解決了問題'金額= $(ls $ W | wc -l)' - thanx的幫助 – 2013-04-22 20:17:11

相關問題