我试图在没有扩展名的情况下比较Dir1和Dir2文件名。 Dir2是Dir1的子目录,所以我从Dir1启动脚本。
Dir1/proof1.txt
Dir1/proof2.txt
Dir1/proof3.txt
Dir1/proof4.txt
Dir1/proof5.txt
Dir1/proof6.txt
Dir1/Dir2/proof1.png
Dir1/Dir2/proof2.png
Dir1/Dir2/proof5.png
我想要的输出是存在于Dir1但不存在于Dir2的文件名:
proof3
proof4
proof6
这就是我使用(不工作)查找Dir1但不在Dir2的文件:
(找。-printf'%P \ n' | grep -v Dir2&&找到Dir2 / -printf'%P \ n'&&找到Dir2 / -printf'%P \ n')|排序| uniq -u
答案 0 :(得分:1)
仅使用没有空格的干净文件名进行测试:
for f in proof*.txt ; do test -f "Dir2/$(basename "$f" .txt).png" || echo no match "$f"; done
答案 1 :(得分:0)
这应该做......
$ comm -23 <(ls -1 | cut -d. -f1) <(ls -1 Dir2/ | xargs -n 1 basename | cut -d. -f1)
如果您的文件名中包含.
而不是分隔扩展名,则可能无法正常工作。