首页 > 解决方案 > 用于将特定文件从 csv 复制到具有相同文件夹层次结构的另一个目录的 Shell 脚本

问题描述

我有一个文件列表要从 smb 服务器复制到我的 centos7 硬盘驱动器从 csv

失踪.csv

Filepath
./2019_06_27_094411_Season_5/Locked_Approved/Master_JPG/501_00001.jpg
./2019_06_27_094411_Season_5/Locked_Approved/Master_JPG/501_00002.jpg
./2019_06_27_094411_Season_5/Locked_Approved/Master_JPG/501_00003.jpg
./2019_06_27_094411_Season_5/Locked_Approved/Master_JPG/501_00004.jpg
./2019_06_27_094411_Season_5/Locked_Approved/Master_JPG/501_00005.jpg
./2019_06_27_094411_Season_5/Locked_Approved/Master_JPG/501_00006.jpg
./2019_06_27_094411_Season_5/Locked_Approved/Master_JPG/501_00007.jpg

现在我需要从 csv 列表(即)复制文件并将其粘贴到filepath column具有相同目录结构的本地驱动器中。

我已经尝试了以下脚本并且只能复制文件,我需要与源目录结构相同的文件。- 我已经在我的 centos 机器上安装并挂载了 smbclient

脚本.sh

#!/bin/bash

while read path; do
  cp -v "$path" "$1"
done

命令: ./script.sh /home/test1 < missing.csv

标签: bashshellcsvcopy

解决方案


即使missing.csv 包含空格,这也很好。

脚本.sh

#!/bin/bash
dest="${1}"
while read l
do
    f="${dest}/${l}"
    d=$(dirname "${f}")
    mkdir -p "${d}"
    cp "${l}" "${f}"                                                            
done
$ cat missing.csv 
./2019 06 27 094411 Season 5/Locked Approved/Master JPG/501 00001.jpg
./2019 06 27 094411 Season 5/Locked Approved/Master JPG/501 00002.jpg
./2019 06 27 094411 Season 5/Locked Approved/Master JPG/501 00003.jpg
./2019 06 27 094411 Season 5/Locked Approved/Master JPG/501 00004.jpg
./2019 06 27 094411 Season 5/Locked Approved/Master JPG/501 00005.jpg
./2019 06 27 094411 Season 5/Locked Approved/Master JPG/501 00006.jpg
./2019 06 27 094411 Season 5/Locked Approved/Master JPG/501 00007.jpg
$ ./script.sh ./dest < missing.csv
$ find dest -type f
dest/2019 06 27 094411 Season 5/Locked Approved/Master JPG/501 00007.jpg
dest/2019 06 27 094411 Season 5/Locked Approved/Master JPG/501 00006.jpg
dest/2019 06 27 094411 Season 5/Locked Approved/Master JPG/501 00004.jpg
dest/2019 06 27 094411 Season 5/Locked Approved/Master JPG/501 00005.jpg
dest/2019 06 27 094411 Season 5/Locked Approved/Master JPG/501 00001.jpg
dest/2019 06 27 094411 Season 5/Locked Approved/Master JPG/501 00002.jpg
dest/2019 06 27 094411 Season 5/Locked Approved/Master JPG/501 00003.jpg

推荐阅读