遍历ls -l输出的每一行 [英] Iterating over each line of ls -l output
本文介绍了遍历ls -l输出的每一行的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!
问题描述
我要遍历输出ls -l /some/dir/*
现在我正在尝试:for x in $(ls -l $1); do echo $x; done
但是,这会分别遍历行中的每个元素,所以我得到:
However, this iterates over each element in the line separately, so I get:
-r--r-----
1
ivanevf
eng
1074
Apr
22
13:07
File1
-r--r-----
1
ivanevf
eng
1074
Apr
22
13:17
File2
但是,我想遍历整个行.我该怎么办?
But I want to iterate over each line as a whole, though. How do I do that?
推荐答案
将IFS设置为换行符,如下所示:
Set IFS to newline, like this:
IFS='
'
for x in `ls -l $1`; do echo $x; done
如果您不想永久设置IFS,请在其周围放置一个子外壳:
Put a sub-shell around it if you don't want to set IFS permanently:
(IFS='
'
for x in `ls -l $1`; do echo $x; done)
或在|时使用改为阅读:
Or use while | read instead:
ls -l $1 | while read x; do echo $x; done
另一个选项,它在同一shell级别上运行while/read:
One more option, which runs the while/read at the same shell level:
while read x; do echo $x; done << EOF
$(ls -l $1)
EOF
这篇关于遍历ls -l输出的每一行的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!
查看全文