(OS X Shell) 根据包含不带扩展名的文件名的文本文件复制文件

(OS X Shell) Copying files based on text file containing file names without extensions

前言:我不是一个 shell-脚本编写者,事实上根本不是一个 shell-脚本编写者。

我有一个文件夹 (folder/files/),其中包含数千个文件,具有不同的扩展名和随机名称。 None 个文件名中有空格。没有子文件夹。

我有一个包含几百个文件名的纯文本文件 (filelist.txt),所有文件名都 没有扩展名 。所有文件名在 folder/files/ 中都有相应的文件,但扩展名不同。有些文件在 folder/files/ 中可能有多个对应文件,但扩展名不同。

来自 filelist.txt 的示例:

WP_20160115_15_11_20_Pro
P1192685
100-1373
HPIM2836

例如,这些可能对应于 folder/files/ 中的以下文件:

WP_20160115_15_11_20_Pro.xml
P1192685.jpeg
100-1373.php
100-1373.docx
HPIM2836.avi

(注意名为 100-1373 的两个文件具有不同的扩展名。)

我正在 OS X (10.11) 机器上工作。我需要做的是 folder/files/ 中与 filelist.txt 中的文件名匹配的所有文件复制到 folder/copiedfiles/.1

我现在一直在疯狂地搜索和谷歌搜索,我发现很多人都在解释如何提取不带扩展名的文件名、查找并复制所有没有扩展名的文件以及各种切线相关的文件问题——但我找不到任何能真正帮助我弄清楚如何做到这一点的东西。如果文本文件中的文件名包含扩展名,则执行 cp ˋcat filelist.txtˋ folder/copiedfiles/ 会起作用(据我所知);但他们没有,所以没有。

最简单(最好是最快)的方法是什么?


1我要做的和this question, but that one is specifically asking about 完全一样,是海人的大锅

应该这样做:

while read filename
do
  find /path/to/folder/files/ -maxdepth 1 -type f \
 -name "$filename*" -exec cp {} /path/to/folder/copiedfiles/ \;
done</path/to/filelist.txt