首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >查找/匹配变量文件名并将文件移动到相应的目录

查找/匹配变量文件名并将文件移动到相应的目录
EN

Stack Overflow用户
提问于 2013-03-15 17:14:34
回答 2查看 2.1K关注 0票数 0

我从来没有这样问“做我的家庭作业”,但我真的不知道从哪里开始这个。

在使用JSignPdf自动签名之后,我将大量文档转储到目录中(--output-directory选项似乎无法输出到与输入相同的位置):

代码语言:javascript
复制
/some/dir/Signed/PDF1_signed.pdf
/some/dir/Signed/PDF2_signed.pdf
/some/dir/Signed/PDF2_signed.pdf

我想找出他们的来源/未签名的对应方:

代码语言:javascript
复制
/some/dir/with/docs/PDF1.pdf
/some/dir/where/is/PDF2.pdf
/some/dir/why/this/PDF3.pdf

...and将签名PDF移动到相应的目录中。

我使用这个命令,在各种目录中查找所有PDF:

代码语言:javascript
复制
find . -name '*.pdf' -exec sh -c 'exec java -jar jsignpdf-1.4.3/JSignPdf.jar ... ' sh {} +

...and --我尝试过让find输出变量,然后使用IF来匹配,但没有成功。我是否需要将find输出变成多个变量?我太迷茫了

我想在一些shell中实现这一点,但是如果有Perl爱好者或者其他任何东西,我非常乐意使用另一个可移植的解决方案。

我试着把它拆散了,但还是不知道怎么实现它.

  • 在没有VarName的情况下查找匹配_signed的文件
  • 将具有匹配名称的_signed文件移动到找到的文件的目录

谢谢你的帮助/指导。

EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2013-03-15 17:39:04

使用while循环读取find找到的每个文件,并将其移动到正确的位置:

代码语言:javascript
复制
find /some/dir -name "*.pdf" ! -name "*_signed.pdf" -print0 | while IFS= read -d '' -r file
do
  f="${file##*/}"
  mv "/some/dir/Signed/${f%.*}_signed.pdf" "${file%/*}"
done
票数 2
EN

Stack Overflow用户

发布于 2013-03-15 17:37:18

我也遇到了一个类似的问题。由于将/some/dir/where/is/PDF2.pdf转换为/some/dir/Signed/PDF2_signed.pdf所需的路径操作相当简单,但比在简单的一行程序中所能完成的操作要复杂得多,所以我一直在使用find来定位第一个集合,并使用一个简单的循环来一次处理它们。你提到了家庭作业,所以我尽量不要给你太多的代码。

代码语言:javascript
复制
find /dir/containing/unsigned -name '*.pdf' -print0 | while IFS= read -d path; do
    fetch_signed_version "$path"
done

如果fetch_signed_version是一个shell函数,那么在给定路径(如/some/dir/where/is/PDF2.pdf )的情况下,提取目录(/some/dir/where/is),计算已签名的PDF名称(PDF2_signed.pdf),然后执行必要的移动(mv /some/dir/Signed/$signed_pdf /some/dir/where/is)

实际上,fetch_signed_version非常简单:

代码语言:javascript
复制
fetch_signed_version () {
   dir=${1%/*}
   fname=${1##*/}
   signed_name=${fname%.pdf}_signed.pdf
   mv "/some/dir/Signed/$signed_name" "$dir"
}
票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/15438347

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档