【问题标题】:Shell script to use a list of filenames in a CSV to copy files from one directory to anotherShell 脚本使用 CSV 中的文件名列表将文件从一个目录复制到另一个目录
【发布时间】:2012-01-23 21:46:10
【问题描述】:

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

文本文件看起来像这样:

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

【问题讨论】:

  • 您能告诉我们 CSV 格式是什么样的吗?也许一些样本数据。每行有一个文件吗? CSV 值目录是否可能存在该文件?每行中的字段数是否相同?
  • 在我看来不像 CSV。
  • +1 表示不是真正的 CSV 文件;->。请编辑您的帖子,以显示您期望生成的副本对于示例数据的第一行的样子。祝你好运。
  • 这是一个csv,只有一列
  • 我不太了解格式。 (例如)A/ART-FHKFX1.jpg 是否意味着在驱动器中搜索名为 A 的文件夹,其中包含名为 ART-FHKFX1.jpg 的文件,然后将该文件复制到 /some/externally/defined/path/ART-FHKFX1.jpg

标签: linux bash shell find


【解决方案1】:

使用find 会花费很多时间,如果可能,请尝试使用locate

当有几场比赛时会发生什么?比如搜索 foo.bar 并拥有 a/foo.bar 和 b/foo.bar 在这种情况下你会怎么做?

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

#!/bin/bash

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

然后这样称呼它:

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

【讨论】:

    猜你喜欢
    • 2015-07-19
    • 2017-10-11
    • 2020-06-18
    • 2012-02-15
    • 2017-11-18
    • 1970-01-01
    • 2013-06-01
    • 2020-06-22
    相关资源
    最近更新 更多