我有一个包含两列的 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 循环将文本文件的内容复制到相应的文件夹中。成功了。