0

我正在编写一个脚本,其目的是对目录中的 .pdf 进行排序并验证是否存在匹配的 .txt ,即:

test.txt
test.pdf

然后如果 .txt 存在,则将它们都移动到另一个文件夹。我不知道如何进行匹配。这是我正在尝试的:

#!/bin/ksh
for PDF in /top/input/*.pdf
do
if [ -e "$PDF".txt ];then
   mv ./$PDF.* ./paired/
fi
done

如果我使用测试数据而不是变量名,它可以工作,但我无法弄清楚如何真正让它动态地找到文件名并搜索它

4

2 回答 2

0

你可以这样做:

#!/bin/ksh
for PDF in /top/input/*.pdf
do
   TXT=${PDF%.pdf}.txt
   if [ -e "$TXT" ];then
      echo mv "$PDF" "$TXT" ./paired/
   fi
done

如果它已经正确,请在测试后echo删除。mv

笔记:

   if [ -e "$TXT" ];then
      echo mv "$PDF" "$TXT" ./paired/
   fi

可以简单

   [ -e "$TXT" ] && echo mv "$PDF" "$TXT" ./paired/
于 2013-09-17T21:16:45.293 回答
0

我相信变量 $PDF 将评估为 pdf 文件的完整路径,包括 .pdf 扩展名。因此,如果文件名是 /top/input/test.pdf,那么“$PDF”.txt 将变为 /top/input/test.pdf.txt。当然,这不是你想要的。所以在使用 $PDF 之前,我相信你已经先去掉了 .pdf 扩展名,然后你可以添加 .txt。不知道如何去掉 ksh 中的扩展,但我相信一个简单的谷歌就可以了。

于 2013-09-17T21:18:20.957 回答