如何使脚本独立于执行的位置

时间:2017-09-25 14:27:00

标签: bash shell unix glob

我遇到了命令失败的问题,因为我希望它们在某个目录中执行,而事实并非如此。

例如,我想这样做:

<version>1.11.192</version>

创建一个新的pdf文档,然后

pdfcrop --margins '0 0 -390 0' $pag "$pag"_1stCol.pdf

问题是mv `\ls /home/dir | grep '_1stCol'` /home/gmanglano/dir/columns 命令失败,因为它找到了文档,它试图移动找到我执行脚本的目录的文件,而不是找到它的位置。

这种情况经常发生在我身上,我觉得我缺少一个概念,或者我认为这是错误的方式。

我得到的错误是:

mv

实际上,如果说失败了,它就不在我启动脚本的目录中。

2 个答案:

答案 0 :(得分:4)

只需使用ls命令,而不是使用find和反引号进行修改。它是为查找文件而构建的,然后根据查找结果执行命令:

 find /home/dir -name "*_1stCol.pdf" -exec mv {} /home/gmanglano/dir/columns \;

这是在/home/dir中找到与名称*_1stCol.pdf匹配的文件,然后移动它们。 {}是找到的文件的标记。

答案 1 :(得分:3)

Don't parse the output of ls:如果您将mv命令简化为

mv /home/dir/*_1stCol.pdf /home/gmanglano/dir/columns

那么你在错误的目录中就不会有问题。

相关问题