bash - 用于将特定文件从 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
解决方案
即使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
推荐阅读
- javascript - 在呈现后更改单个事件的 startEditable 值
- c++ - 使用 std::thread 时,主线程中的循环卡住了
- r - 如何将 if-else 函数应用于多个“if 语句”和两个不同的数据帧大小?
- view - 实体框架使用视图而不是表创建模型
- flutter - 创建带阴影的弧形卡片
- java - 使用 json 配置使用自定义转换器将 POJO 转换为 POJO
- c# - 如何调整图表大小超过屏幕分辨率?
- git - git pull 仅适用于上游主机 - 是否需要推送?
- python - 如何在多处理中运行 pandas concat?
- google-cloud-platform - 有很多 Compute Engine API 请求是否正常?