这是什么问题?for i in ls - Unix语法
for i in 'ls | grep '^[A-Z]......$'
do
echo $i
done
如果我只是使用命令ls | grep '^[A-Z]......$
我得到的文件,我想
我缺少什么?
这是什么问题?for i in ls - Unix语法
for i in 'ls | grep '^[A-Z]......$'
do
echo $i
done
如果我只是使用命令ls | grep '^[A-Z]......$
我得到的文件,我想
我缺少什么?
你的意思
for i in `ls | grep '^[A-Z]......$'`;do echo $i;done
? actully这是'和'之间的区别,限制在你的shell中,而不是正则表达式或操作系统问题。
不应该反引号吗?
for i in `ls | grep blahblahblah`; do echo $i; done
当你使用反引号“'”,而不是单引号“'”反引号之间的程序的输出将被用作外壳输入,即
for i in `ls | grep '^[A-Z]......$'`;do echo $i;done
的这是“错误的”,是不需要使用外部的ls
命令来列出你的文件并grep你的模式。只需使用外壳。
for file in [A-Z]??????
do
echo $file
done
grep
是不必要的,因为外壳已经做文件名扩展:
for file in $(ls [A-Z]??????)
do
echo $file
done
注意带空格和类似会打破这个循环的文件名。
ls
可避免太固定前一个问题,而是一个测试需要再添加,以防止处理不存在的文件时,没有文件匹配的模式:
for file in [A-Z]??????
do
[[ -f "$file" ]] && echo $file
done
+1反引号,而不是你也可以使用'$(....)'替换命令。 请参阅http://tldp.org/LDP/Bash-Beginners-Guide/html/sect_03_04.html – 2010-07-09 08:03:44
我仍然无法让这个工作? – matt123 2010-07-09 08:09:27
不需要使用外部命令。看到我的答案 – ghostdog74 2010-07-09 08:43:02