【问题标题】:Writing out to CSV Error写入 CSV 错误
【发布时间】:2014-06-30 03:35:47
【问题描述】:

我从一位离开公司的同事那里继承了一个脚本,容我们说,在编写脚本和做笔记方面很懒惰。在他离开之前,他坚持认为这个脚本运行良好,但从未花时间向我展示或验证它是否可以在新环境中运行,现在我坚持使用它。

它似乎工作正常,只是它没有像预期的那样写入 CSV。它应该给我图像、宽度、高度和总像素数的文件名。我得到的是文件名,空白,空白,变量名变量名。任何帮助将不胜感激:

#!/bin/bash
#
# This script will display 
# all images included

ORIGDIR=~/Desktop/EPUB_Fix/Needs_Work
DIRECTORY=~/Desktop/EPUB_Fix/Work_Area
DESTINATION=~/Desktop/EPUB_Fix/Fixed
PROCESSED=~/Desktop/EPUB_Fix/Original_Files
EPUB=*.epub

cd ~/Desktop

cp -v $ORIGDIR/$EPUB $DIRECTORY
mv -v  $ORIGDIR/$EPUB $PROCESSED

#cd $PROCESSED
#rename 's@(.*?)\.epub@$1_orig.epub@' $EPUB

cd $DIRECTORY

for epubfile in $(ls "$DIRECTORY"/$EPUB); do
    echo 
    echo =================================
    echo 
    zipfile=$(basename $epubfile .epub).zip
    directoryname=$(basename $zipfile .zip)
    mv -v "$epubfile" "$DIRECTORY"/"$zipfile"
    ziperror=0
    ziperror=$(unzip -t "$DIRECTORY"/"$zipfile" > /dev/null)$?

    if [ $ziperror -eq "0" ]; then
        unzip -o "$DIRECTORY"/"$zipfile" -d "$DIRECTORY"/"$directoryname"

        echo
        echo "Printing file name to CSV"
        for eisbn in $(find $DIRECTORY/$directoryname); do
            EVALUE=0
            while [ $EVALUE -eq 0 ]; do
                eisbn=$(basename $directoryname)
                echo "EISBN: $eisbn" > $eisbn.csv
                let EVALUE=1
            done
        done
        echo "Printing image names"
        echo >> $eisbn.csv
        echo Name,Width,Height,Total >> $eisbn.csv
        echo >> $eisbn.csv
    echo "Printing total images with their sizes"
        echo
        for image in $(find $DIRECTORY/$directoryname -name "*.jpg" -o -name "*.jpeg" -o -name "*.png" -o -name "*.gif"); do
            size="$(identify --format "%w %h" "$image")"
            width="${size%% *}"
            height="${size##* }" 
            imagename=$(basename $image)
            total=$(($width * $height))
            echo $imagename,$width,$height,$total >> $eisbn.csv
        done

        for dbfile in $(find $DIRECTORY/$directoryname -name Thumbs.db); do
            rm -v $dbfile
        done

        for dsfile in $(find $DIRECTORY/$directoryname -name .DS_Store); do
            rm -v $dsfile
        done

        for plistfile in $(find $DIRECTORY/$directoryname -name iTunesMetadata.plist); do
            rm -v $plistfile
        done

        for ologfile in $(find $DIRECTORY/$directoryname -name Output.log); do
            rm -v $ologfile
        done

        for csvfile in $(find $DIRECTORY -name *.csv); do
            mv -v $csvfile $LOG
        done        

        cd "$DIRECTORY"/"$directoryname"
        cp -v -f /media/sf_epubs/mimetype "$DIRECTORY"/"$directoryname"
        zip -X -0 $DESTINATION/$directoryname.zip mimetype
        zip -r $DESTINATION/$directoryname.zip * -x mimetype
        mv -v $DESTINATION/$directoryname.zip $DESTINATION/$directoryname.epub
        rm -v -r "$DIRECTORY"/"$directoryname"
        rm -v "$DIRECTORY"/$zipfile
    fi
done

【问题讨论】:

  • 如果你选择一个图像文件并运行identify --format "%w %h" <imagefile.jpg>,输出是什么?
  • 这是一个bash脚本,所以不要像sh scriptname那样调用它

标签: bash csv terminal


【解决方案1】:

size="$(identify --format "%w %h" "$image")" 行的格式选项应该是-format 而不是--format

尝试将该行更改为,看看是否有帮助

size="$(identify -format '%w %h' $image)"

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2018-01-06
    • 1970-01-01
    • 1970-01-01
    • 2018-06-14
    • 1970-01-01
    • 2023-03-15
    • 1970-01-01
    相关资源
    最近更新 更多