(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 batch-file完全一样,是海人的大锅
应该这样做:
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
前言:我不是一个 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 batch-file完全一样,是海人的大锅
应该这样做:
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