删除文件,如果结束字符不匹配

时间:2016-09-01 17:35:27

标签: bash pattern-matching match matching string-matching

我正在尝试从/Dir1中删除/Dir2中不存在的文件。问题是前几个字符匹配,但不是最后几个。例如。

/Dir1
abc_def.png
xyz_xyz.png

/Dir2
abc_ghi.png

因此,只要“abc”匹配,即使最后几个字符不同,我也不想删除该文件。我要删除的唯一文件是xyz.png,因为/Dir2中不存在该文件。我该怎么做呢?

1 个答案:

答案 0 :(得分:0)

假设您想在第一个下划线之前匹配部分文件名(如您的示例所示),您可以使用此代码:

cd /Dir1

for f in *_*; do
    [[ -f /Dir2/"${f%%_*}"* ]] || echo rm "$f"
done

满意后,请在echo之前移除rm