"ls -t . | while read line"是什么意思?



代码如下:

if test $# -eq 1
then
  if test $1 = "--exec"
  then
    ls -t . | while read line
    do
      if test -f $line -a -x $line
      then
        echo $line
      fi
    done
  fi
fi

我不明白 . ls -t . | while read line中的效用;你能解释一下吗?

行按修改时间升序列出当前目录下的所有文件。管道操作符将目录列表的结果发送给while循环,该循环将ls命令中的每一行读入变量"line"。当我做这类事情时,我通常使用foreach循环,但两种方法都可以。

你的代码只是打印当前文件夹中的所有可执行文件,按修改时间排序。

一般来说,shell脚本编写是非常危险的,因为您可能编写出非常容易出错或风格不好的代码,而实际上却没有意识到这一点。或者即使你做了,你也可能对问题没有正确的理解。

为了达到同样的目的,我会这样写:

find . -maxdepth 1 -type f -executable -printf '%T@ %p' | sort -zk 1nr | sed -z 's/^[^ ]* //'

最新更新