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
だから2つあります。
- このコマンドをすべての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/
(2番目のスラッシュで誤解しないでください。実際にglobがあるようです**/
)。
到着ファイルの先頭にテキストを追加する準安全:
echo "text" | cat - yourfile > /tmp/out && mv /tmp/out yourfile
より安全な解決策は、任意の一時ディレクトリを使用して、このディレクトリを妨げる他のほとんどすべてのプロセスを防ぐことです。
dir="$(mktemp -d)" && echo "text" | cat - yourfile > "$dir/out" && mv "$dir/out" yourfile