【发布时间】:2018-01-11 15:11:06
【问题描述】:
所以我有一个 csv 文件,其中包含格式如下的图像名称列表:
FPC-84WB.jpg
Arctic-Blue.jpg
Azuria.jpg
Azuria-Reflective.jpg
BLACK-REFLECTIVE.jpg
Bronze.jpg
Champagne.jpg
Copper.jpg
Light-Green.jpg
Orange.jpg
Pacific-Blue.jpg
....
last-image.jpg
我想使用find /var/www/html/ -name [name of image] -exec convert [options] {} \; 批量转换所有这些图像,而不必去寻找它们的确切目录或路径。那么如何将 csv 的每一行传递给 find 命令来批量转换所有这些图像。
我尝试用谷歌搜索来解决这个问题,但出现的一切都是关于将输出从 find 传递到另一个命令或文件,而我想要相反。
编辑:pics.csv 我用来在本地机器上测试:
delta-heat-logo.jpg
two-dogs-designs-logo.jpg
modern-flames-logo.jpg
polyscience-logo.jpg
real-fyre-logo.jpg
the-good-one-logo.jpg
man-law-logo.jpg
american-outdoor-grill-logo.jpg
afd-logo.jpg
KAGspritesheet.png
tec-logo.jpg
ogr-logo.jpg
FPDspritesheet.png
hpc-logo.jpg
primo-logo.jpg
american-fireglass-logo.jpg
napoleon-logo.jpg
cavo-logo.jpg
coc-logo.jpg
fire-magic-logo.jpg
spotix-logo.jpg
fornetto-logo.jpg
Blaze-Grills-Logo.jpg
bge-logo.jpg
DCS-logo.jpg
greatco-logo.jpg
DCS-Logo-HP.jpg
skytech-logo.jpg
afd-logo_1.jpg
homecrest-logo.jpg
Lynx-Logo-BW-White.jpg
fusionchef-logo.jpg
amantii-logo.jpg
pics.txt
good-one-logo.jpg
jatex-logo.jpg
Warming-Trends.jpg
polyscience-logo_1.jpg
SPOTIXspritesheet.png
poly-science-logo.jpg
summerset-logo.jpg
twin-eagles-logo.jpg
面对同样问题的其他人的工作命令是:
find [path] \( $(sed 's/.*/-o -name &/; 1s/-o //' [csv file]) \) -exec convert {} [options] {} \;
【问题讨论】:
-
您知道文件中列出的所有名称都不包含任何空格或制表符(或引号或美元符号)吗?据推测,没有一个名称包含任何换行符?文件路径中的空格目前不是问题。图像列表有多大?几百个或更少的名字,还是成千上万个?
-
@JonathanLeffler 所有图像都没有空格,并且列表长达数百。我只需要修剪每一行末尾的空格,然后一次将它们传递给
find命令。我不知道任何文件的确切路径,因为我们使用 magento,我们的服务器上散布着 10 或数千张图像,并且产品图像目录非常复杂。
标签: linux shell command-line find