bash – 在同一文件夹终端脚本中复制具有相同名称的多个文件
我有很多名为相同的文件,目录结构(简化)如下:
../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脚本,因为我必须手动更改目录. 我想最好的方法是从名称开头复制文件 我怎么能做到这一点呢? 解决方法
如果您只有两个级别的目录,则可以使用
for file in */*/*.ps do ln "$file" "${file////_}" done 这遍历每个ps文件,并将它们硬链接到当前目录,并将/ s替换为_.如果您打算编辑文件但不想更新原件,请使用cp而不是ln. 对于任意目录级别,您可以使用特定于bash的 shopt -s globstar for file in **/*.ps do ln "$file" "${file////_}" done 但是你确定需要将它们全部复制到一个目录吗?您可以使用阅读器* / * / *.ps打开它们,这取决于您的阅读器可以让它们一个接一个地浏览它们,同时仍然可以看到完整的路径. (编辑:李大同) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |