我有一个程序正在将一些图像下载到文件夹中。我想计算当前文件夹中图像的数量。我使用了类似的命令ls -1 download_folder | wc -l
。
但是这个命令需要很多时间来运行(因为我已经下载了很多图像)。当此命令运行时,我的下载器会继续下载图像。
最后,我的命令返回计数。我想知道这个计数是从什么时间戳开始的。是从我开始运行命令的那一刻开始还是它给出了当前的最新计数?
编辑:我尝试为自己验证,但找不到任何方法。谢谢。
答案1
该ls
命令正在读取整个目录,并对它进行排序,然后将其传递给wc
,无论如何它并不关心顺序。它将运行很多如果你告诉ls
不要排序,速度会更快,如下所示:
ls -U | wc -l
这将减少添加新文件的时间窗口,并且更加准确。然而,添加和列出之间仍然存在无法克服的竞争条件。有些文件系统对名称进行哈希处理,有些文件系统会附加到线性列表,因此ls
在运行时可能会或可能不会看到任何添加。