HTML 파일 목록을 반복하면서 {% load static from staticfiles %}
파일이 존재하는지 확인하고존재하지 않는 경우, {% load static from staticfiles %}
앞에 추가되었습니다.
지금 1개 파일에서 호출하는 내용은 다음과 같습니다 job/home.html
(모든 파일에 적용하기 전 테스트용).
grep -q '{% load static from staticfiles %}' job/home.html || sed -i '' 's+{% load static from staticfiles %}\n+' job/home.html
그래서 두 가지가 있습니다.
- 이 명령을 모든 HTML 파일에 대해 재귀적으로 만드는 방법
- 줄 바꿈,
\n
줄 바꿈이 아닌 것 같습니다.
답변1
다음을 시도해 보세요. 재귀적인 결과가 반환되어야 합니다.
find /home/user/myfolder -name '*.html' -exec sh -c '
for file do
yourcommands with "$file"
done' sh {} +
찾기에 대한 추가 정보 및 다양한 예제http://en.wikipedia.org/wiki/찾기그리고 뭔가 다른 것https://unix.stackexchange.com/questions/tagged/find
답변2
이 시도:
find /home/user/myfolder -name '*.html' -exec sh -c '
fgrep &>/dev/null "{% load static from staticfiles %}" "$1" ||
sed -i '1i {% load static from staticfiles %}!' "$1"
' -- {} \;
답변3
당신이 가지고 있다면bash
4 이상shopt -s globstar
다음을 사용하여 재귀 glob을 활성화 할 수 있습니다 .
... job/**/*.html
(@evilsoup에게 감사드립니다!)
.html
이 glob은 내부의 모든 파일을 확인합니다 job/
(두 번째 슬래시로 오해하지 마세요. 실제로 glob이 인 것처럼 보입니다 **/
).
도착하다파일 시작 부분에 텍스트 추가준안전:
echo "text" | cat - yourfile > /tmp/out && mv /tmp/out yourfile
더 안전한 해결책은 임의의 임시 디렉토리를 사용하여 이 디렉토리를 방해하는 거의 모든 다른 프로세스를 방지하는 것입니다.
dir="$(mktemp -d)" && echo "text" | cat - yourfile > "$dir/out" && mv "$dir/out" yourfile