複数のファイルをdiffで比較するために以下のシェルを作成しましたが
diff: 「ファイル名」の後のオペランドがありません
とエラーが表示されてしまいます。
htmlディレクトリとhtml_bkディレクトリ内にある
ファイルを比較する処理になります。
========================================
find ./html -name *.html -type f |
while read f
do
echo $f | sed 's/html/html_bk/g' $temp
diff $f $temp >> diff.txt
done
======================================
$tempの中身はhtml_bkと変更されていました。
原因が分かる方がいましたら教えてください。
No.2ベストアンサー
- 回答日時:
> htmlディレクトリとhtml_bkディレクトリ内にある
> ファイルを比較する処理になります
diff -r html html_bk
で一発なんですけど....
このシェルスクリプトを完成させるなら
# -nameで*を使いたいときは""で括る
find ./html -name "*.html" -type f |
while read f
do
# 実行結果を変数に取り込むならバッククオートを使う
# 先頭が必ず ./html/ になるから、htmlを置き換えればいいのだけど、
# より正確にするなら、こんな感じ
temp=`echo $f | sed 's|^\./html/|./html_bk/|'`
# ファイル名の空白が含まれることも考慮して、""で括る
diff "$f" "$temp" >> diff.txt
done
kmeeさん、返答ありがとうございます。
教えて頂いたとおりに書いたら動きました。
それに、-rオプションという便利なものがあったんですね。
丁寧に教えてもらったおかげで注意する点や勉強不足がはっきりと
分かりました。
ありがとうございました。
No.1
- 回答日時:
いろいろ問題あるなぁ....
・「$tempの中身はhtml_bkと変更されていました。」と書かれていますが, temp を変更している部分が見当たりません. 「更新されていた」というのはどのように確かめたのですか?
・*.html はクォートしないとまずい
・sed で置換する時になぜ g をつけている?
・そもそもこれはシェルスクリプトであってシェルではない
この回答への補足
Tacosanさん返答ありがとうございます。
変更内容は、echo $tempで画面に出力させて確認したのですが
確認の方法が間違っていましたでしょうか?
htmlのクウォーとsedのgに関しては、記述が間違っておりました。
原因が分からなかったので、いろいろ試していた際に間違った記述をコピーしてしまいました。
シェルについては、痛いご指摘です。
何せほとんど書いたことがありませんので良くわかっておりません。
お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!
似たような質問が見つかりました
- UNIX・Linux Linuxについて質問です。 以下のhistoryの出力結果から、sedコマンドのファイル名tmp1 1 2023/02/03 20:11
- CGI htmlからパラメータで、cgiに渡したい。 1 2023/02/06 16:15
- PHP htmlspecialcharsが機能していないです。 バグですか? 1 2022/04/05 01:22
- PHP ここでの ②if($su_d<>"")の比較演算子 を使う理由は 1 2022/03/26 02:33
- HTML・CSS HTMLを正しく表示させるには 2 2023/06/18 09:12
- その他(プログラミング・Web制作) python 気象データの取得 2 2023/06/20 23:54
- UNIX・Linux JSLinuxについて。 Linuxのこの手順のプログラミングは合っているでしょうか。 ①ホームディ 2 2022/06/20 15:33
- フリーソフト サイトで使用していない画像ファイルの削除ソフトを探しています。 3 2023/04/05 10:49
- PHP $filePath = './user_img/' . $file['name'];? 1 2022/12/10 07:29
- Visual Basic(VBA) ExcelのVBAコードについて教えてください。 2 2023/05/23 16:28
このQ&Aを見た人はこんなQ&Aも見ています
関連するカテゴリからQ&Aを探す
おすすめ情報
このQ&Aを見た人がよく見るQ&A
デイリーランキングこのカテゴリの人気デイリーQ&Aランキング
-
フォルダの中の特定のファイル...
-
インラインフレームの横スクロ...
-
薬用アロエの美味しい食べ方
-
Apacheのドキュメントルートを...
-
中埜酢店 のよみかた
-
VBAからhttpを呼びソースを取得
-
Excel VBA :URLの中で変数を使...
-
セイヨウタンポポとカントウタ...
-
四字熟語のシャッフル
-
html宣言文同じサイト内に数種...
-
iframeの中のページのリンクを...
-
You Are The Sunshine Of My Li...
-
Duolingo のソースコードの名前...
-
Excelで、社外秘(閲覧のみ)と...
-
googleドライブで、PDFファイル...
-
HTMLからフォルダを開きたい
-
一つのリンクに複数のURLを指定
-
HTMLページが勝手にダウンロー...
-
Excelのマクロについて教えてく...
-
iPadの標準ブラウザでローカルH...
マンスリーランキングこのカテゴリの人気マンスリーQ&Aランキング
-
セイヨウタンポポとカントウタ...
-
lang 英語と日本語など混ざる時は
-
noindexタグを試作ページの段階...
-
javaでhtmlファイルを開く方法
-
Excel VBA :URLの中で変数を使...
-
ベーシック認証時、キャンセル...
-
インラインフレームの横スクロ...
-
メール本文に変な文字が
-
iframeの中のページのリンクを...
-
複数のファイルをdiffで比較す...
-
フォルダの中の特定のファイル...
-
相対パスでリンクできない
-
VBAからhttpを呼びソースを取得
-
HTML5の宣言で画像に隙間が出来...
-
鉄腕アトム:トビオの母親
-
jQueryにてformの中を書き換え...
-
You Are The Sunshine Of My Li...
-
htmlのinput type="date"をgett...
-
Apacheのドキュメントルートを...
-
「Crypto API」について
おすすめ情報