Shell脚本使用CSV中的文件名列表将文件从一个目录复制到另一个目录

时间:2012-01-23 21:46:10

标签: linux bash shell find

我有一份需要复制的文件列表。我想以递归方式搜索驱动器并将这些文件复制到设置位置(如果该文件名存在于列表中)。该列表是一个文本文件/

文本文件看起来像这样:

A/ART-FHKFX1.jpg
B/BIG-085M.jpg
B/BIG-085XL.jpg
L/LL-CJFK.jpg
N/NRT-56808EA.jpg
P/PFE-25.10.jpg
P/PFE-7/60.jpg
P/PFE-7L.20.jpg
P/PFE-8.25.jpg
P/PFE-9.15.jpg
P/PFE-D11.1.tiff
P/PFE-D11.1.tiff
P/PFE-D12.2.tiff
P/PFE-D12.2.tiff

1 个答案:

答案 0 :(得分:2)

使用find需要花费大量时间,如果可能,请尝试使用locate

有多场比赛会发生什么?比如搜索foo.bar并拥有/ foo.bar和b / foo.bar你会在那种情况下做什么?

你的csv似乎包含了一个路径,鉴于前面我会假设这些路径实际上是从脚本运行的位置开始有效的,所以在这种情况下只需这样做:

#!/bin/bash

while read path; do
    cp "$path" "$1"
done

然后这样称呼:

teh_script /path/to/destination < csv-file.csv