如果某个查找正在搜索一个大光盘,并且由于某种原因而中止,我希望能够从它停止的地方重新开始它。
有没有一个版本的“查找”可以做到这一点?
问题是,如果您保存目录并从那里启动它,它不会执行相同的查找。例如:
find /bigvol -type f -execdir whereami="$(pwd)";do_it {} \; echo whereami >/bigvol/state
将当前搜索的目录放入文件 /bigvol/state 中,假设它是 /bigvol/down/in/the/deep
但是,如果您在那里开始下一个查找:
find "$(cat /bigvol/state)" -type f -execdir whereami="$(pwd)";do_it {} \; echo whereami >/bigvol/state
然后你会在“deep”中找到所有内容(并对该目录中的前几个文件重新执行“deep”),但你会停止并且不再搜索 /bigvol/further
我希望能够这样说:
find <dir>:<starting from>
因此,如果我在上面的示例中保存了最后一个处理的文件,请再次启动它。
理想情况下,语法允许:
find <dir>:<starting_from> -- start from the last file and re-execute for that filefind <dir>:+<starting_from> -- start from the file after the last file last file
filefind <dir>:-<starting_from> -- start from the file before the last file last file
有任何想法吗?
答案1
我不知道有什么方法可以做到这一点。也许另一个工具可以做到这一点。或者也许您需要另一种方式来看待这种情况。
您可以将查找操作拆分为多个查找。该/bigvol
文件夹可能有子文件夹。您可以将操作拆分find
为每个文件夹的操作。如果它已经处理了前几个文件夹,您可以稍后跳过这些文件夹。
这里的问题是这些子文件夹之一可能包含所有文件的 95%。你可以用 来分析这个du
。如果你知道这一点,你可以进一步拆分它。问题是你采用这种方法能走多远。