bash 文件名开始匹配

标签 bash pattern-matching filenames

我有一个足够简单的问题,但还没有通过论坛或 bash 获得指导。问题如下:

我想为目录中与 *.h 或 *.cpp 匹配的每个文件名添加前缀字符串。但是,如果前缀已应用于文件名,请勿再次应用。

为什么以下不起作用尚未弄清楚:

for i in *.{h,cpp}
do
if [[ $i!="$pattern*" ]]
then mv $i $pattern$i
fi
done

最佳答案

你可以试试这个:

for i in *.{h,cpp}
do
if ! ( echo $i | grep -q "^$pattern" ) 
# if the file does not begin with $pattern rename it.
then mv $i $pattern$i
fi
done

关于bash 文件名开始匹配,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/3746794/

相关文章:

c# - 包含的集合数量的简明解决方案

scala - 可变参数的默认空大小写

python - (OpenCV) 将日期放在文件名中

xml - xquery 文件扩展名

bash - 列出不包含某些文件的目录?

bash - shell 脚本中的奇怪 "echo"行为

linux - 获取shell脚本的最后一个参数

pattern-matching - 如何巧妙地解构嵌套在记录中的新类型?

c - 路径:在 `#include` 中是否有效?

linux - 如何正确循环这个 BASH 语句?