根据CSV输入选择并压缩文件

时间:2013-08-02 11:51:25

标签: linux bash shell csv

我正在尝试读取csv文件中的每个列,然后使用csv上的列中的数据搜索目录。读完所有行后,我想创建一个新目录,将文件复制到该目录,最后压缩目录。关于如何做的任何想法?

以下是CSV文件的示例:

add an example here...

2 个答案:

答案 0 :(得分:1)

我不知道,如果你想以不同的方式处理每一列,但如果没关系,这里是脚本的划痕。

separator=";" # select separator type in your csv file
csv_file="`pwd`/file.csv" # path to your csv file
search_dir="`pwd`/searchdir" # directory, where we search for files, that are in csv files
copy_to_dir="`pwd`/newdir" #directory where to save copied files

mkdir $copy_to_dir #making copy dir

for i in `cat ${csv_file} | tr $separator '\n'` ; do # reading all the entries in csv file    
    find $search_dir -name "$i" | xargs -i cp {} $copy_to_dir
    # assuming, that all entries in csv are files to be found in a dir and copied     
done

zip -j -r copied_files.zip $copy_to_dir # zip found contents
rmdir $copy_to_dir # if you need just the zip file

答案 1 :(得分:0)

这是基于您提供的信息的脚本草稿:

destdir="/path/to/destination/directory"
filelist=""
while IFS=, read col1 col2 col3 col4 ...
do 
  # check if the file should be included in filelist
  if [ ... ]; then
    filelist+="$col1/$col2/$col3.$col4 "
  fi

  if [ ! -z "$filelist" ]; then
    mkdir -p $destdir
    for goodfile in $filelist; do
      cp $goodfile $destdir
    done
  fi
done < file.csv

为了使事情更清楚,我假设CSV文件中的列只是您感兴趣的文件的路径和名称的一部分。 希望这可以帮助。 :)