Bash - 使用find提取url

问题描述 投票:0回答:1

当我在提取(膨胀)XLSX的目录中运行以下命令时,我获得子文件夹文件中找到的所有URL。

找 。 -exec exiftool {} \; | grep http

现在我想将它作为我开发的bash脚本的一部分运行,但它完成时根本不显示任何内容。

这是脚本中的代码:

if [[ $fileName == *.xlsx ]]; then 
    #file is XML based, create new directory with file name, copy file there and extract
    echo "Creating directory\n"
    DATE=`date +%Y-%m-%d`
    mkdir "Files/$DATE-$fileName-$USER"
    cp $filePath "Files/$DATE-$fileName-$USER"
    unzip "Files/$DATE-$fileName-$USER/$fileName" -d "Files/$DATE-$fileName-$USER/"
    result="find 'Files/$DATE-$fileName-$USER/$fileName' -exec exiftool {} \; | grep http"
    printf $result
fi

在弄清楚这里有什么问题时,我们非常感谢您的支持。

bash shell
1个回答
3
投票

你没有调用命令,有分配

result="find 'Files/$DATE-$fileName-$USER/$fileName' -exec exiftool {} \; | grep http"

但该命令被视为一个字符串,从未执行过。单引号中的变量也不会扩展。相反,写

result="$(find "Files/$DATE-$fileName-$USER/$fileName" -exec exiftool {} \; | grep http)"

Other improvements

echo默认不承认\n。用echo "Creating directory\n"替换echo "Creating directory"并添加另一个空的echo以获得额外的换行符。

printf $result可能吞下%逃逸序列和第一个空间后的部分。引用变量并使用%sprintf %s "$result"

不要将目录及其中的文件传递给exiftool。使用exiftool的递归选项并删除find部分或将-type f添加到find命令,这样只列出文件。

© www.soinside.com 2019 - 2024. All rights reserved.