我正在编写一个脚本,其目的是对目录中的.pdfs进行排序,并验证是否存在匹配的.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
如果我使用测试数据而不是变量名称,它可以工作,但我无法弄清楚如何实际让它动态查找文件名并搜索它
答案 0 :(得分: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/
答案 1 :(得分:0)
我相信变量$ PDF将评估为pdf文件的完整路径,包括.pdf扩展名。因此,如果文件名是/top/input/test.pdf,则“$ PDF”.txt将变为/top/input/test.pdf.txt。当然,这不是你想要的。因此,在使用$ PDF之前,我相信您首先剥离了.pdf扩展名,然后您可以使用.txt。不知道如何在ksh中剥离扩展程序,但我相信一个简单的谷歌会这样做。