i有一个.csv文件,其中第8列(命名filepath)包含我想将文件的文件位置复制到Linux中的主文件夹。现在,我想循环浏览此列,并使用CP功能将文件复制到我家中的文件夹。我试图做以下操作:
#!/bin/bash
while read filepath
do
for filepath in $filepath
cp $filepath /home/files
done
done < files.csv
但是,这似乎不起作用。当我用回声语句替换" for循环"时,它没有打印出文件位置,而是整个文件的行。
感谢您的帮助,
如果是csv,则每个字段均由逗号分隔(默认情况下),您可以使用cut
选择您需要的一个。
cut -d, -f8 files.csv | xargs -i cp {} /home/files/
您可以逐行读取CSV文件,然后使用数组中的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