【发布时间】:2018-06-02 06:28:03
【问题描述】:
在 extfs 上,如果目录中只有文件创建而没有删除,我希望 find . -type f 会按照创建的时间顺序(或 mtime)列出文件,如果不是,则在至少按时间倒序排列...取决于目录内容的遍历方式。
但这不是我看到的行为。
例如,以下代码创建一组新的目录和文件:
#!/bin/bash -u
for i in a/ a/{1,2,3,4,5} b/ b/{1,2,3,4,5}; do
if echo "$i" | egrep -q "/$"; then
echo "Creating dir $i"
mkdir -p "$i"
else
echo "Creating file $i"
touch "$i"
fi
sleep 0.500
done
上述sn-p的输出:
Creating dir a/
Creating file a/1
Creating file a/2
Creating file a/3
Creating file a/4
Creating file a/5
Creating dir b/
Creating file b/1
Creating file b/2
Creating file b/3
Creating file b/4
Creating file b/5
但是,find 以某种随机顺序列出文件。例如,a/2 不关注a/1,b/2 不关注b/1:
$ find . -type f
./a/1
./a/3
./a/4
./a/2 <----
./a/5
./b/1
./b/3
./b/4
./b/2 <----
./b/5
知道为什么会发生这种情况吗?
我的主要问题是:我有一个非常大的卷存储 100 个文件中的 100 个。我需要按照创建/修改的顺序(mtime)遍历这些文件和目录,并将每个文件通过管道传输到另一个进程以进行进一步处理。但我不一定要先创建一个包含大量文件的临时列表,然后根据mtime 对其进行排序,然后再将其传递给我的进程。
【问题讨论】: