我有一个.csv文件,其中第8列(名为filepath)包含我要复制到Linux中我的主文件夹的文件的文件位置。现在我想循环遍历此列并使用cp函数将文件复制到我家中的文件夹。我试着做以下事情:
#!/bin/bash
while read filepath
do
for filepath in $filepath
cp $filepath /home/files
done
done < files.csv
然而,这似乎不起作用。当我用echo语句替换for循环中的'cp'时,它没有打印出文件位置,而是打印出整个文件行。
感谢您的帮助,
答案 0 :(得分:3)
如果是csv,则每个字段用逗号分隔(默认情况下),您可以使用cut
选择所需的字段。
cut -d, -f8 files.csv | xargs -i cp {} /home/files/
答案 1 :(得分:1)
您可以逐行读取CSV文件到BASH数组中,并使用数组中的第8个元素:
#!/bin/bash
while read -ra cols
do
cp "${cols[7]}" /home/files
done < files.csv
如果csv文件以逗号分隔,则使用:
while IFS=, read -ra cols
do
cp "${cols[7]}" /home/files
done < files.csv