gpt4 book ai didi

linux - 如何将图像名称列表从 csv 文件传递​​给 find 命令?

转载 作者:塔克拉玛干 更新时间:2023-11-03 01:17:51 27 4
gpt4 key购买 nike

所以我有一个 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 文件])\) -exec convert {} [选项] {}\;

最佳答案

显示的文件名全部仅使用可移植文件名代码集 (A-Za-z0-9_-.) 中的字符。假设我们看不到的列表部分适用,并且列表的长度不超过几百个条目,那么您可以使用如下内容:

find /var/www/html/ \( $(sed 's/.*/-o -name &/; 1s/-o //' file.csv) \) \
-exec convert [options] {} \;

如果转换器程序在单个调用中接受多个参数,请将 \; 替换为 +

我们的想法是您将生成如下命令:

find /var/www/html/ ( 
-name FPC-84WB.jpg
-o -name Arctic-Blue.jpg
-o -name Azuria.jpg
-o -name Azuria-Reflective.jpg
-o -name BLACK-REFLECTIVE.jpg
-o -name Bronze.jpg
-o -name Champagne.jpg
-o -name Copper.jpg
-o -name Light-Green.jpg
-o -name Orange.jpg
-o -name Pacific-Blue.jpg
....
-o -name last-image.jpg
) -exec convert [options] {} ;

在我展示 find 会看到的内容的地方(我已经删除了反斜杠,并且用空格分隔参数)。

关于基本文件名中的字符的问题的意义在于使用可移植文件名字符集避免了引用每个文件名的需要,这使得工作比你必须处理(一些the) 可移植文件名字符集之外的字符。文件列表的大小很重要,以免超过单个命令的长度限制 - 这通常很大(如 100 KiB 或更多),但不是无限的。

关于linux - 如何将图像名称列表从 csv 文件传递​​给 find 命令?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/48210220/

27 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com