我有很多同名的文件,目录结构(简化)如下:
../foo1/bar1/dir/file_1.ps
../foo1/bar2/dir/file_1.ps
../foo2/bar1/dir/file_1.ps
.... and many more
由于通过转到相应目录来查看所有这些 ps 文件效率极低,我想将它们全部复制到另一个目录中,但包括前两个目录的名称(这与我的目的相关)在文件名中。
我以前试过这样,但我无法得到哪个文件来自哪里,因为它们都是连续命名的:
#!/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 脚本,因为我必须手动更改目录。
我想最好的方法是从复制文件名中包含的前两个目录的名称开始复制文件。
我该怎么做这最后一件事?