我正在尝试遍历同一目录中的文件,其中只有一个4。
这是我到目前为止所拥有的。我当前脚本的问题是选择任意数量为4的文件,而不是只有一个4的文件。
for i in *4*.cpp;
do
...
类似[!4]
,但任意数量的非4个字符。
* HTTP://www.tuxfiles.org/linuxhelp/wildcards.html
我想迭代文件名,例如me4.cpp,4.cpp和hi4hi.cpp
我想忽略文件名,例如lala.cpp,44.cpp,4hi4.cpp
谢谢!
想出来。我心血来潮地尝试了[!4] *。 哎呀原来我没有。这被解释为([!4])然后(*)
答案 0 :(得分:3)
您需要的grep
样式正则表达式是:
^[^4]*4[^4]*$
线路开始后的一堆4号线,4号线,以及另一组4号线不到4号线。
在纯shell中,请考虑使用case
语句:
for file in *4*.cpp
do
case "$file" in
(*4*4*) : Ignore;;
(*) : Process;;
esac
done
查找包含4个的名称,然后忽略包含2个或更多4个的名称。
答案 1 :(得分:0)
如何使用find
find ./ -regex "<regular expression>"
答案 2 :(得分:0)
假设bash:
shopt -s extglob
for file in *([^4])4*([^4]).cpp; ...
其中*([^4])
表示零个或多个不是“4”的字符