【发布时间】:2013-01-30 12:16:35
【问题描述】:
我有很多同名的文件,目录结构(简化)如下:
../foo1/bar1/dir/file_1.ps
../foo1/bar2/dir/file_1.ps
../foo2/bar1/dir/file_1.ps
.... and many more
因为通过转到 相应的目录,我想将它们全部复制到另一个目录中,但包括 前两个目录的名称(与我的目的相关) 文件名。
我以前试过这样,但我无法从哪里得到哪个文件,因为他们 都是连续命名的:
#!/bin/bash -xv
cp -v --backup=numbered {} */*/dir/file* ../plots/;
../plots 是我复制它们的文件夹。但是,它们现在的格式为 file.ps.~x~(x 是一个数字),所以我去掉了“.ps.~*~”,只留下 ps 扩展名:
rename 's/\.ps.~*~//g' *;
rename 's/\~/.ps/g' *;
然后,由于ps文件有时有数百个点并且需要很长时间才能打开,所以我将它们转换为jpg。
for file in * ; do convert -density 150 -quality 70 "$file" "${file/.ps/}".jpg; done;
这不是一个真正有效的 bash 脚本,因为我必须手动更改目录。
我想最好的方法是从名称开始复制文件 复制的文件名中包含的前两个目录。
我该如何做最后一件事?
【问题讨论】:
标签: bash scripting copy rename