linux - 如何在我的 Linux shell 脚本中遍历此 FIND 命令的结果?

标签 linux bash shell unix

我写了下面的命令来按文件大小的顺序列出“~”中和下面的所有文件。它似乎工作正常:

find ~ -printf "%k KB %p\n" | sort -nr

现在我想把这是一个 shell 脚本并循环遍历结果以进行更多处理。

我用一个简单的“ls”命令让它工作:

dir="/home/myusername"
cmd='ls'
for i in `$cmd`
do
  echo $i
done

但这行不通:

dir="/home/myusername"
cmd='find $dir -printf "%k KB %p\n" | sort -nr'
for i in `$cmd`
do
  echo $i
done

我也试过在双引号前使用转义字符,但那也不管用...

dir="/home/myusername"
cmd='find $dir -printf \"%k KB %p\n\" | sort -nr'
for i in `$cmd`
do
  echo $i
done

知道我做错了什么吗?

最佳答案

在 BASH 中尝试使用 while 循环查找:

while read -r f; do
    echo "$f"
done < <(find "$dir" -printf "%k KB %p\n" | sort -nr)

关于linux - 如何在我的 Linux shell 脚本中遍历此 FIND 命令的结果?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/21371242/

相关文章:

linux - 使用 zmv 或重命名将具有路径名的文件重命名为正确的大小写

c - 尝试在 Linux 中编译 Pro*C 程序时出错

c++ - Boost.Extension - 简单的继承示例 - 为什么我们在 Linux 上看不到动物?

linux - 这行代码在 shell 中是如何工作的?

swift -/usr/bin/sudo : Operation not permitted error when trying to run sudo commands via Swift process

java - 是什么导致 Java Servlet 仅使用 LF 或 CRLF 打印字符串

linux - Kafka 滚动重启——在生产集群上执行 Kafka 滚动重启的正确方法是什么

linux - 如何创建指向它的符号链接(symbolic link) self - linux

linux - 在 bash 中读取 CSV 文件

linux - Shell:在带有换行符的变量上使用 grep