現在、ubuntu/linuxを使用しています。
あるディレクトリ以下のファイル名と内容を全て出力するシェルスクリプトを作りたいです。例えば、
/home/web/以下aa.phpとbb.phpとcc.phpのファイルがあるとします。(実際は、20ファイル程度あります)
これをall.txtに
aa.php←ファイル名
・・・←aa.phpの内容
bb.php←ファイル名
・・・←bb.phpの内容
cc.php←ファイル名
・・・←cc.phpの内容
とファイル名とファイルの内容を順次結合させるにはどういうシェルスクリプトを作成すればよろしいでしょうか?できれば、for文などで動的に繰り返し制御を行えたら一番うれしいです。今までは、lsやcat文で一行づつ記述していましたが、さすがにファイル数が増えると面倒になりました。
追伸 何がやりたいかというと自分のサイトのソースを全部1ファイルにまとめて、pdfや印刷をしたいです。欲をいうとサブディレクトリまで検索して結合できると一番うれしいのですが・・・(まだディレクトリ数は少ないのでなんとかなります)
No.4ベストアンサー
- 回答日時:
#! /bin/sh
#
WORKDIR="/home/web"
cd $WORKDIR
find . -type f -name "*.php" -print | while read file ; do
echo "=== $file ==="
cat $file
done
※ .phpだけではなく全ファイルという事なら『-name "*.php"』を削れば良いし、php もPhpもPHPもという事なら-nameの変わりに-inameを使えば良い。
> サブディレクトリまで検索して結合できると一番うれしいのですが
できますよ。ディレクトリの階層を限定する場合にはfindコマンドの-d(-depth)オプションを指定すれば良いです。
『find . -type d -print 』でディレクトリを表示できますので、ディレクトリ一覧をみて対象にする階層の深さを考えても良いです。
No.6
- 回答日時:
グルたちの不機嫌そうな顔が目に浮かぶので 2点修正。
1) サブディレクトリ対応
2) 余計なファイルをソースディレクトリに作らない。
cd /home/web/
find . -name '*.php' -print0 | xargs -0 pr -F -n > /tmp/$(date '+%y%m%d')-php_srcs4print.txt
コマンドマニュアル
http://linuxjm.sourceforge.jp/html/GNU_findutils …
http://linuxjm.sourceforge.jp/html/GNU_findutils …
No.5
- 回答日時:
やっとコマンド名おもいだせた!
cd /home/web/
pr -F -n *\.php > all.txt
http://linuxjm.sourceforge.jp/html/GNU_textutils …
20年前にこんなにもたもた回答してたらグルたちの機嫌をそこねるところだったよ!
No.2
- 回答日時:
PHPやってるのなら、考え方はわかると思いますが
・filenameと表示
echo "filename"
・ファイル filenameの内容を表示
cat filename
→filenameと表示してからファイル filenameの内容を表示
echo "filename" ; cat filename
→変数filenameを表示してから、変数filenameの名前のファイルの内容を表示
echo "${filename}" ; cat "${filename}"
→ *.phpに一致するファイルに対して(B-sh系)
for filename in *.php
do
echo "${filename}" ; cat "${filename}"
done
→ サブディレクトリに再帰的に辿るには、findを使うとよい。
find . -name "*.php" -type f -print -exec cat \{\} \;
for文については、man sh , man bash
findについては man find
も参考に。
お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!
関連するカテゴリからQ&Aを探す
おすすめ情報
- ・漫画をレンタルでお得に読める!
- ・人生のプチ美学を教えてください!!
- ・10秒目をつむったら…
- ・あなたの習慣について教えてください!!
- ・牛、豚、鶏、どれか一つ食べられなくなるとしたら?
- ・【大喜利】【投稿~9/18】 おとぎ話『桃太郎』の知られざるエピソード
- ・街中で見かけて「グッときた人」の思い出
- ・「一気に最後まで読んだ」本、教えて下さい!
- ・幼稚園時代「何組」でしたか?
- ・激凹みから立ち直る方法
- ・1つだけ過去を変えられるとしたら?
- ・【あるあるbot連動企画】あるあるbotに投稿したけど採用されなかったあるある募集
- ・【あるあるbot連動企画】フォロワー20万人のアカウントであなたのあるあるを披露してみませんか?
- ・映画のエンドロール観る派?観ない派?
- ・海外旅行から帰ってきたら、まず何を食べる?
- ・誕生日にもらった意外なもの
- ・天使と悪魔選手権
- ・ちょっと先の未来クイズ第2問
- ・【大喜利】【投稿~9/7】 ロボットの住む世界で流行ってる罰ゲームとは?
- ・推しミネラルウォーターはありますか?
- ・都道府県穴埋めゲーム
- ・この人頭いいなと思ったエピソード
- ・準・究極の選択
デイリーランキングこのカテゴリの人気デイリーQ&Aランキング
-
wgetで既存の同名ファイルを常...
-
ls であるファイル以外を表示し...
-
入力/出力エラーですというファ...
-
サブディレクトリも含めて最新...
-
caclsとは?
-
沢山のフォルダにあるファイル...
-
HTML5からAndroid APKを作成する
-
hamachiにログイン出来ません
-
パソコン SDカードが読み込め...
-
実行と保存の違いは。
-
Edgeでダウンロード状況表示画...
-
TXTファイルを上書き保存する前...
-
Pivot table で集計されたデー...
-
フォルダーをコピーするとファ...
-
ファイルをコピーしたとき、も...
-
ファイルのプロパティの属性の...
-
エクセルでファイルの最終更新...
-
VBAでPDF作成をしたあと、指定...
-
マイクラでコマンド使いたいの...
-
isoイメージファイルの復元方法
マンスリーランキングこのカテゴリの人気マンスリーQ&Aランキング
-
入力/出力エラーですというファ...
-
ls であるファイル以外を表示し...
-
FTP 転送コマンド
-
再起動後にフォルダが消えるのは?
-
作成したはずのファイルが表示...
-
サブディレクトリも含めて最新...
-
Linuxである拡張子のファイルだ...
-
ftpコマンドで再帰的にフォ...
-
特定の拡張子をもつファイルの...
-
mvコマンドについて
-
solaris9 ディレクトリ内のフ...
-
wgetで既存の同名ファイルを常...
-
grepの使い方
-
Windows7の文字コード環境
-
UNIXのnohupコマンドについて
-
caclsとは?
-
複数のjpegファイルを、一度にp...
-
linux(UNIX) の grep で、ある...
-
MS-DOSプロンプトについて【素人】
-
Unix:ls-lRのリダイレクト
おすすめ情報