我有一个bash脚本可以对多个文件进行操作,但操作不应该发生在特定的文件子集上 - 如果文件名匹配〜 .jpg [例如如在myimage~xa.jpg]。
declare -a AFileList2
for sFile in *.jpg
do
echo "Testing $sFile"
if [ -d "$sFile" ]
then
echo "skipping directory $sFile"
else
if [ -f "$sFile" ]
then
if [[ "$sFile" =~ "*~*.*" ]]
then
echo "skipping $sFile"
else
echo "operating on $sFile"
AFileList2+=($sFile)
((iFilesFound++))
fi
fi
fi
done
echo "Found by eval: $iFilesFound file(s)"
上面的for循环的关键部分是行
if [[ "$sFile" =~ "*~*.*" ]]
但它不起作用。
我从pdf Advanced bash脚本编制指南中的示例中获得了它,其中演示脚本为:
#!/bin/bash
variable="This is a fine mess."
echo "$variable"
if [[ "$variable" =~ "T*fin*es*" ]]
# Regex matching with =~ operator within [[ double brackets ]].
then
echo "match found"
# match found
fi
但即使这个演示脚本也无法正常工作。
任何帮助apreciated
答案 0 :(得分:1)
替换它(globbing?)
[[ "$sFile" =~ "*~*.*" ]]
这个正则表达式
[[ "$sFile" =~ .*~.*\..* ]]