在 BASH 中使用 cp 并有多个可能的匹配时,如何仅复制第一个匹配?

Vil*_*age 0 bash copy

我有一个 PNG 文件的目录,根据内容的描述命名,例如:

\n\n
images/blueberry.png\nimages/blueberry_garden.png\nimages/blueberry_painting.png\nimages/carrot_garden.png\n
Run Code Online (Sandbox Code Playgroud)\n\n

我还有一个关键字列表,例如:

\n\n
blueberry\ngarden\n
Run Code Online (Sandbox Code Playgroud)\n\n

我只需从images/其中复制一个文件output/,以便有一个与关键字完全相同的图像,例如:

\n\n
images/blueberry.png \xe2\x86\x92 output/blueberry.png\nimages/blueberry_garden.png \xe2\x86\x92 output/garden.png\n
Run Code Online (Sandbox Code Playgroud)\n\n

从哪一个匹配文件复制并不重要image/,只要它包含关键字即可。

\n\n

在 BASH 脚本中,我有这一行,查找包含单词“garden”的文件并将其复制到output/garden.png

\n\n
cp images/*garden* output/garden.png\n
Run Code Online (Sandbox Code Playgroud)\n\n

如果它只找到一个与该文件匹配的文件,则可以正常复制。然而,当它找到多个匹配项时,它不会复制任何内容。

\n\n

如何复制文件,以便仅选择可能的匹配项之一进行复制?

\n

Bar*_*mar 5

将匹配的文件名放入数组中,然后复制数组的第一个元素。

files=(images/*garden*)
cp "${files[0]}" output/garden.png
Run Code Online (Sandbox Code Playgroud)