Файл трубопроводов с находкой
Когда я запускаю команду cd dir && find . -name "*.html"
он прекрасно отображает все HTML-файлы, включая HTML-файлы в подкаталогах. Но когда я запускаю команду cd dir && find . -name "*.html" | for f in *.html; do "action"; done
только циклы для меня в текущем каталоге, но не изменяет HTML-файлы в подкаталогах. Я попытался включить поиск в цикл for, но только привел к сообщению об ошибке.
1 ответ
Решение
Вы можете переписать его как
cd dir && find . -name "*.html" | while read f; do "action"; done
когда ты сделал
... for f in *.html; ...
Вы, где на самом деле список HTML-файлов в текущем каталоге, это эквивалентно ls *.html
на самом деле, а не фильтрация списка, полученного из канала (который игнорируется)