所以我有2个文件夹,里面有很多类似的文件,并且版本写在文件名中,所以我想做的是检查文件名的开头是否相同(例如“sample-1.12”和“sample-1.13” “应该被视为相同)。我只需要在相反的文件夹中查找没有类似命名文件的文件。
要检查的文件名的初始部分以第一个破折号、下划线或方括号结束。
答案1
您可以使用${a:|b}
数组减法运算符:
dir1=/some/dir
dir2=/some/other/dir
a=($dir1/*[[_-]*(N:t)) # [t]ail of every file with at least one -, [ or _
b=($dir2/*[[_-]*(N:t))
a=(${a%%[[_-]*}) # strip [*, _* or -* suffix
b=(${b%%[[_-]*})
print -r in $dir1 and not in $dir2:
print -rC1 -- ${a:|b}
print -r in $dir2 and not in $dir1:
print -rC1 -- ${b:|a}