Поиск файлов и отправка во временный файл

"Место на диске, освобожденное процессом" - не очень полезное понятие, потому что оно очень размыто. Если процесс A удаляет файл, который все еще открыт в процессе B, приписываете ли вы A освобождение пространства, когда он удаляет файл (в этот момент система фиксирует освобождение дискового пространства), или B, когда он закрывает файл (в этот момент пространство действительно освобождается)? Если файл имеет две жесткие ссылки и два процесса удаляют одну из них примерно в одно и то же время, имеет ли смысл засчитывать освободившееся место второму процессу, а не первому? Если процесс перезаписывает сегмент файла, считается ли это освобождением перезаписанных данных? (Изменится ли ваш ответ, если файловая система выполняет дедупликацию?) и т.д.

Вы можете выбрать определение и настроить код ядра на его отслеживание, но это будет несколько произвольный выбор и практическая польза будет ограниченной, поэтому такая функция не является общедоступной. Каждая функция имеет свою стоимость: время программиста на ее реализацию, время программиста на ее последующее сопровождение, риск ошибок, которые она вносит, потребление памяти и процессора...

Вы, вероятно, можете реализовать это (опять же, выбирая одно конкретное определение) для обычных сценариев, используя существующие функции отладки, такие как Systemtap в Linux.

1
17.12.2015, 15:57
1 ответ

Спустя некоторое время я теперь могу ответить на свой вопрос.

Сверху вниз:

alias -g V='| tee $(rm fifo.tmp; mkfifo fifo.tmp && echo fifo.tmp) &; vim $(< fifo.tmp ) && rm fifo.tmp'

Это псевдоним zsh, который позволяет:

find . -name TODO V

или

ls | grep asciidoc V

и открывать все файлы как буферы в Vim.

Как-то не работает без тройника , например заменяя | tee with > не открывает никаких буферов в Vim.

Здесь мы создаем канал с именем fifo.tmp , говорим tee перенаправить на него вывод предыдущей команды и отправлять его в фоновый режим; тем временем мы читаем этот канал в подоболочке и помещаем вывод в виде списка файлов, которые должен открывать Vim.

Однако это не работает с именами файлов, содержащими пробелы.

0
27.01.2020, 23:36

Теги

Похожие вопросы