遍历ls -l输出的每一行 [英] Iterating over each line of ls -l output

查看:427
本文介绍了遍历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屋!

查看全文
登录 关闭
扫码关注1秒登录
发送“验证码”获取 | 15天全站免登陆