0

コードは以下のとおりです。ファイル サイズが 410 バイト未満のいくつかのファイルをチェックしたい:

for file in *; do
    if [[ "$file" =~ ^dataset([0-9]+)$ && `du -b $file/${BASH_REMATCH[1]}_conserv.png` -lt 410 ]]; then
    cd $file
    $some_commands
    cd ..
    fi
done

ただし、このスクリプトを実行すると、次のように不平を言います。

less_than_410.bash: line 2: [[: 13605   dataset4866/4866_conserv.png: syntax error in expression (error token is "dataset4866/4866_conserv.png")

これを修正する方法について誰かアイデアがありますか? ありがとう!

4

3 に答える 3

3
du -b file

ファイルのサイズと名前が出力されます。cutサイズのみを取得するために使用します。

du -b file | cut -f 1
于 2012-11-20T07:46:47.353 に答える
0

ファイル ループを制限するには、bash 拡張グロビングを使用します。

shopt -s extglob
for file in dataset+([0-9]); do
    num=${file#dataset}
    (( $(stat -c %s "$file/${num}_conserv.png") >= 410 )) && continue
    do stuff here
done
于 2012-11-20T15:26:06.217 に答える