linux - 遍历 ls -l 输出的每一行

我想遍历输出中的每一行:ls -l/some/dir/*

现在我正在尝试:for x in $(ls -l $1); echo $x;完成

但是,这会分别迭代该行中的每个元素,所以我得到:

-r--r-----
1
ivanevf
eng
1074
Apr
22
13:07
File1

-r--r-----
1
ivanevf
eng
1074
Apr
22
13:17
File2

但我想将每一行作为一个整体进行迭代。我该怎么做?

最佳答案

将 IFS 设置为换行符,如下所示:

IFS='
'
for x in `ls -l $1`; do echo $x; done

如果您不想永久设置 IFS,请在其周围放置一个子 shell:

(IFS='
'
for x in `ls -l $1`; do echo $x; done)

或者使用while |改为阅读:

ls -l $1 | while read x; do echo $x; done

还有一个选项,在同一 shell 级别运行 while/read:

while read x; do echo $x; done << EOF
$(ls -l $1)
EOF

https://stackoverflow.com/questions/2859908/

相关文章:

python - 在 Python 2.6 中不推荐使用 BaseException.message

python - 多处理:如何在类中定义的函数上使用 Pool.map?

python - 如何在python中声明零数组(或一定大小的数组)

linux - 抑制makefile中命令调用的回声?

c - 线程有不同的堆吗?

python - 如何量化两个图像之间的差异?

linux - 如何在 linux 上监控进程的线程数?

linux - 创建 .tar.gz 文件时排除目录

python - 如何更改绘图背景颜色?

linux - 在 bash 中检查当前分区的可用磁盘空间