我想在我的 USB 记忆棒上重新排序文件。问题在于 mp3 阅读器将按照文件写入记忆棒的确切顺序读取文件。输出播放器阅读顺序的唯一方法是使用ls -f输出未排序的内容。
触摸每个文件以更新上次写入时间无济于事,我已经尝试过了。如果我用ls -f输出它,它仍然保持相同的顺序
我已经考虑过“重写” FAT 以更正顺序,但我认为社区可能知道更简单的方法。bash 中可能有一种方法可以实现这一点。
我想在我的 USB 记忆棒上重新排序文件。问题在于 mp3 阅读器将按照文件写入记忆棒的确切顺序读取文件。输出播放器阅读顺序的唯一方法是使用ls -f输出未排序的内容。
触摸每个文件以更新上次写入时间无济于事,我已经尝试过了。如果我用ls -f输出它,它仍然保持相同的顺序
我已经考虑过“重写” FAT 以更正顺序,但我认为社区可能知道更简单的方法。bash 中可能有一种方法可以实现这一点。
最好的答案最好概括为“这是傻瓜的差事;不要尝试”。文件系统通常不保证返回结果的顺序,也不能保证此顺序与任何规范的磁盘顺序相匹配。(结果可能从缓存中返回;从无序索引中返回;等等)。
如果你坚持尝试...
dest=$1
tmpdir=$(mktemp -d -t tempdir.XXXXXX)
mv "$dest"/* "$tmpdir" # move files out of the location
for f in "$tmpdir"/*; do # globs are implicitly sorted in LC_COLLATE order
mv "$f" "$dest/" # ...so move them back in in that order.
done