• 締切済み

LINUXのcshについて、foreach構文の質問です。

LINUXのcshについて、foreach構文の質問です。 foreach構文で、foreach i (20XX/*.txt)として、カレントディレクトリ上の20XXフォルダに、テキストファイルが数個はいっているとします。 このとき、テキストファイルすべてのはじめから2行をのぞいてそれ以降の部分からmd5sumでハッシュをとり、その横にファイル名をそれぞれつけたいのですが。。。 とりあえず、 foreach i (20XX/*.txt) cat $i | tail -n +2 | md5sum | sort >> 20XX_hash.txt でハッシュ値がとれることは分かったのですが、、、 コレにいかにしてファイル名を付属できますか? 何か良いアイディアありませんか? よろしくお願いします。 申し訳ないですが、明日までにお願いしますOTL

みんなの回答

  • kmee
  • ベストアンサー率55% (1857/3366)
回答No.1

>その横にファイル名 横って、どっち? > cat $i | tail -n +2 | md5sum | sort >> 20XX_hash.txt cat と sort必要ですか? tail -n +2 "$i" | md5sum >> 20XX_hash.txt で十分ですが。といいますか、2行除くなら3行目からですよね。それなら tail -n +3 "$i" | md5sum >> 20XX_hash.txt です。 さて、md5sumの出力は md5のハッシュ - となっているので、この頭なりおしりなりにファイル名(=$i)をくっつければいいわけです。 例えば、 sedを使う tail -n +3 "$i" | md5sum | sed "s/-/$i/" >> 20XX_hash.txt とか、 ``を使う echo `tail -n +3 "$i" | md5sum` $i >> 20XX_hash.txt とか、awkを使うとか、perlを使う(なら全部まとめてもいい)とか

すると、全ての回答が全文表示されます。

関連するQ&A