Дескрипторы процессов - это концепция Windows, поэтому, что касается Unix и Linux, в первую очередь нечего закрывать. Однако родительский процесс должен правильно получить статус выхода с помощью waitpid или wait.
Когда процесс остановлен, то есть приостановлен, но не завершен, его можно возобновить, и вы можете найти много информации о нем.
Когда он завершился, вы ничего не можете сделать, чтобы оживить его или получить информацию о нем (за пределами его статуса выхода, если он не получен родительским процессом).
Команда find
просто выводит в том порядке, в котором файловая система задает записи каталога, без какой-либо сортировки или обработки. В зависимости от используемой файловой системы и других факторов переименование даже одного файла может изменить порядок итерации, но вполне вероятно, что изменение всех файлов приведет к этому. Без жесткого -контролируемого окружения нет особой причины, по которой два find
s должны отдавать один и тот же приказ.
Например, многие современные файловые системы хранят имена в хеш-таблице и выполняют итерации в порядке появления записей в ней. Небольшое изменение имени файла может произойти намного раньше или позже в таблице, чем исходное, или даже вызвать полное повторное -хеширование всего каталога, так что все перемещается. В этом случае нет никакого реального способа собрать все воедино.
Возможно, что sort
использование имен файлов могло бы помочь, если бы каждое из них имело уникальный неизменный префикс, но это единственный реалистичный вид пост-обработки, -который вы могли бы выполнить и продолжать с двумя отдельные файлы из двух find
прогонов. Я не рекомендую даже пробовать это.
Однако у detox
есть опция -v
, которая распечатывает вносимые изменения (и -n
для распечатки того, что будет делать ). Вы можете использовать это для создания файла CSV или непосредственно из Python, используяsubprocess.run
.
detox -v... | sed -e 's/ -> /,/' > names.csv
создаст CSV-файл, по крайней мере, так же хорошо, как один из ваших find
с автоматически совпадающими старыми и новыми именами. Для базовых имен (, таких как %f
сделал ), вам потребуется постобработка, которую вы можете сделать в Python, если это необходимо, или в оболочке.