0

我想根据每个文件夹中以相同两个字母开头的文件数量执行不同的操作 --- 如果 TS 中的文件小于或等于 6 来执行一组操作,否则执行另一组我的数据看起来像这样

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 ] 

我收到另一个错误说“争论太多”

你能帮忙吗

4

1 回答 1

2

要获得行数,我建议将 ls -l 管道传输到 wc -l,这将在您的目录中吐出行数,如下所示...

Atlas $ ls -l | wc -l
    19

我制作了一个小脚本,展示了如何使用此结果有条件地做一件事或另一件事......

#!/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”语句中使用这些结果!

于 2013-04-22T19:25:20.520 回答