将文件从 CSV 中的列 1 复制到 CSV 中的列 2 中的目标文件夹名称(Linux)

将文件从 CSV 中的列 1 复制到 CSV 中的列 2 中的目标文件夹名称(Linux)

我有一个包含两列的 CSV。第 1 列是完整文件名。第 2 列是文件夹名称。我需要将第 1 列中的文件复制到第 2 列中的文件夹中。文件和文件夹都在同一个主目录中。我有以下脚本:

IFS=','
while read OS HS
do
    cp -av $OS $HS
done < SlingManifest.csv

这说明它正在运行,但是当我检查文件夹时,我得到了一个没有名字的文件。文件的内容是正确的,但是文件没有名字,并且每个文件夹中只有一个文件。我该如何防止这种情况?

CSV 的 vim 示例:

TinyHouseNation_600SqFtPowercouplesRetreat_190473_SLING.xml,./2_25_17/
BuyingTheView_RuralCasaNiagara_192555_SLING.xml,./2_26_17/
BuyingTheView_SexyHideAwayToronto_192546_SLING.xml,./2_26_17/
LifetimeOriginalMovie_LoveByThe10thDate_188563_SLING.xml,./2_27_17/
Special_10thDateGirlsNightIn_196744_SLING.xml,./2_27_17/
Special_SniperInsideTheCrosshairs_49112_SLING.xml,./2_27_17/

答案1

在尝试复制到该目录之前,您应该确保该目录存在:

#!/usr/bin/env bash
IFS=','
while read OS HS
do
    mkdir -p $HS
    cp -av $OS $HS
done < SlingManifest.csv

答案2

我找到了答案。我使用 for 循环为每个子文件夹创建文本文件,然后使用新的嵌套 for 循环将文本文件的内容复制到相应的文件夹中。成功了。

相关内容