【发布时间】:2017-01-21 09:49:06
【问题描述】:
我有一个文件名列表(没有完整路径,只有包含扩展名的文件名),我想在指定路径 (dir) 的子文件夹中找到它并将它们复制到目标 (dest) 文件夹。 每个文件名由换行符分隔。
我不知道有什么工具可以做到这一点(即我在 Gnome Commander 中找不到合适的选项),所以我为此编写了一个小的 Bash 脚本:
#!/bin/bash
dir="~/Dropbox/in_THIS_folder_and_subfolders_of_this_folder_I_have_files_which_I_wish_to_copy"
dest="~/PleaseCopyMeHere"
listOfFileNamesToCopy="ext-SM_OPER_MIR_CLF33A_20160303T000000_20160305T235959_300_002_7_1.DBL.nc.png
ext-SM_OPER_MIR_CLF33A_20160306T000000_20160308T235959_300_003_7_1.DBL.nc.png
DA_TC_MIR_CL_33SMOS_20160305.DBL.nc_hist_pl.pdf
msk_TC_cal_sub_msk_TC_ca__sum__SMOS_20160303.DBL_div_filt.tif.png
summsk_TC_cal_sub_msk_TC_ca__sum__SMOS_20160303.DBL_div_filt.tif_hist_pl.pdf
"
while read line; do
find "$dir" -name "$line" -exec cp '{}' $dest
done < "$listOfFileNamesToCopy"
不幸的是,它不起作用,我不知道出了什么问题。请您提出解决方案吗?
【问题讨论】:
-
变量
listOfFileNamesToCopy中的文件是否换行了? -
是的,他们是。如果这是问题的根源,也许我应该用不同的字符分隔它们或将文件列表保存在文件中?
-
请注意,
dir和dest分配中的波浪号扩展不会发生,因为它们被引用了。将波浪线移出引号,或使用变量$HOME代替波浪号。