正则表达式解析文件名

时间:2015-12-24 06:50:36

标签: regex string

我正在尝试使用dropbox_uploader.sh脚本上传一堆具有相同名称(200.jpg)但位于不同文件夹中的图像。

所以我有.../a/200.jpg.../b/200.jpg等,我希望他们上传到Folder/a/200.jpgFolder/b/200.jpg。目前,他们仅仅作为" 200.jpg"

相互压倒

这就是我现在所得到的结果: ../Dropbox-Uploader/dropbox_uploader.sh upload */200.jpg Folder/

2 个答案:

答案 0 :(得分:2)

您可以使用find执行此操作,

find */ -name '200.jpg' -exec dropbox_uploader.sh upload ./"{}" Folder/"{}" \;

这将在当前目录的子目录中找到名为200.jpg的所有文件,然后调用dropbox_uploader.sh。它最终执行这样的事情:

dropbox_uploader.sh upload a/200.jpg Folder/a/200.jpg
dropbox_uploader.sh upload b/200.jpg Folder/b/200.jpg

如果您需要先创建目录,然后才能上传到目录,那么您可以执行以下操作

find */ -name '200.jpg' -exec dirname "{}" \; | \
     xargs -I"{}" dropbox_uploader.sh mkdir Folder/"{}"

答案 1 :(得分:0)

从我在dropbox_uploader.sh的源代码中看到的,脚本不支持这种行为。

您应该在脚本中构建需要上传的文件列表,然后为列表中的每个文件调用dropbox_uploader.sh upload。

这样,您可以更好地控制选择哪些文件,并在需要时进行更高级的过滤。