如果结束字符不匹配,则删除文件
Delete File, If End Characters Don't Match
我正在尝试从 /Dir1
中删除 /Dir2
中不存在的文件。问题是前几个字符匹配,但最后几个不匹配。例如。
/Dir1
abc_def.png
xyz_xyz.png
/Dir2
abc_ghi.png
所以只要 "abc" 匹配,即使最后几个字符不同,我也不想删除文件。我要删除的唯一文件是 xyz.png
,因为它不存在于 /Dir2
中。我该怎么做?
假设你想匹配第一个下划线之前的部分文件名(如你的示例),你可以使用此代码:
cd /Dir1
for f in *_*; do
[[ -f /Dir2/"${f%%_*}"* ]] || echo rm "$f"
done
满意后,删除 rm
之前的 echo
。
我正在尝试从 /Dir1
中删除 /Dir2
中不存在的文件。问题是前几个字符匹配,但最后几个不匹配。例如。
/Dir1
abc_def.png
xyz_xyz.png
/Dir2
abc_ghi.png
所以只要 "abc" 匹配,即使最后几个字符不同,我也不想删除文件。我要删除的唯一文件是 xyz.png
,因为它不存在于 /Dir2
中。我该怎么做?
假设你想匹配第一个下划线之前的部分文件名(如你的示例),你可以使用此代码:
cd /Dir1
for f in *_*; do
[[ -f /Dir2/"${f%%_*}"* ]] || echo rm "$f"
done
满意后,删除 rm
之前的 echo
。