这有什么问题?
for i in 'ls | grep '^[A-Z]......$'
do
echo $i
done
如果我只使用命令ls | grep '^[A-Z]......$
,我会得到我想要的文件
我错过了什么?
答案 0 :(得分:4)
“错误”的是,没有必要使用外部ls
命令列出您的文件并grep您的模式。只需使用shell。
for file in [A-Z]??????
do
echo $file
done
答案 1 :(得分:1)
当你使用反引号:“`”而不是单引号“'”时,反引号之间程序的输出将被用作shell的输入,即
for i in `ls | grep '^[A-Z]......$'`;do echo $i;done
答案 2 :(得分:0)
for i in `ls | grep '^[A-Z]......$'`;do echo $i;done
? 实际上这是`和'之间的区别,在你的shell中有限,而不是正则表达式或操作系统问题。
答案 3 :(得分:0)
这些不应该是反击吗?
for i in `ls | grep blahblahblah`; do echo $i; done
答案 4 :(得分:0)
grep
是不必要的:
for file in $(ls [A-Z]??????)
do
echo $file
done
请注意,带有嵌入空格和类似内容的文件名会破坏此循环。
ls
也可以避免修复前一个问题,但是当没有文件与模式匹配时,需要添加测试以防止处理非现有文件:
for file in [A-Z]??????
do
[[ -f "$file" ]] && echo $file
done