Я пытаюсь использовать «find» для выполнения команды на кучу файлов HTML, а затем вывести результат в другой каталог. Тем не менее, труба терпит неудачу, потому что имя файла, найденное с помощью «find», включает в себя путь, и путь не соответствует структуре каталогов цели канала. По существу мне нужно удалить путь из второго экземпляра {} ниже.Стрип-путь от find для использования в трубе
find subd/*.html -type f -exec "./mycmd {} opts > subd2/{}" \;
Это упрощенная версия команды, но в реальном мире, положив «../» перед mysubdirectory2 не будет работать, а также не префиксы „CD & & СУБД“.
Basename, похоже, не делает то, что я думаю, мы оба думаем, что это должно сделать в этом контексте. По какой-то причине он не выделяет путь. –
В этом конкретном случае я думаю, что 'basename {}' запускается * перед * 'find', и его вывод (скорее пустой, но, возможно, сообщение об ошибке) заменяется на строку с двойными кавычками, что приводит к' find subd/* .html -type f -exec "./mycmd {} opts> subd2 /" \; ' – twalberg
Очень хорошие моменты. Я обновил его, чтобы избежать обратных шагов, и в моем тестировании это рабочее решение. –