現在、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で質問しましょう!
似たような質問が見つかりました
- MySQL MySQL,JavaScript,PHPコードの結果を表示する方法を教えてください。 1 2023/02/13 17:49
- PHP どうして送信されないのでしょうか? 1 2022/12/09 05:23
- PHP 掲示板を作成しておりアップロードファイルとメッセージを並べたいので、アドバイスお願い致します 2 2023/07/17 21:01
- その他(プログラミング・Web制作) 置換ソフトで指定したファイルの1行目に入力できるものを探しています 7 2022/11/24 10:34
- PDF PDFに精通した方に質問。JPEGファイル群を一つのPDFファイルにするときの容量変化について 6 2023/07/23 19:06
- UNIX・Linux JSLinuxについて。 Linuxのこの手順のプログラミングは合っているでしょうか。 ①ホームディ 2 2022/06/20 15:33
- PHP アップロード画像数でCSSを分けることに成功したのですが、画像の横に文字を並べることが出来ません。 3 2023/07/28 17:16
- PHP アップロードファイルの数に応じてCSSを動的に変更したいのですが、方法がわかりません 3 2023/07/23 21:59
- PHP $filePath = './user_img/' . $file['name'];? 1 2022/12/10 07:29
- UNIX・Linux Linuxについて質問です。 シェルスクリプト名をfind.shとして、以下の条件をすべて満たすファ 1 2023/02/03 03:50
関連するカテゴリからQ&Aを探す
おすすめ情報
デイリーランキングこのカテゴリの人気デイリーQ&Aランキング
-
Linuxについて質問です。 シェ...
-
作成したはずのファイルが表示...
-
サブディレクトリも含めて最新...
-
ホルダーが削除出来ません
-
ディレクトリ内より特定の文字...
-
mvコマンドについて
-
すべてのファイルに対してgrep...
-
Linuxである拡張子のファイルだ...
-
tarでのdat-tape出力を途中で止...
-
wgetで既存の同名ファイルを常...
-
ディスク容量ほぼ100%にな...
-
ファイル名を元にタイムスタン...
-
エクセルVBAについて
-
onedriveで同期解除をしたら、...
-
teratarmでコマンド入力すると...
-
vlan internal allocation poli...
-
沢山のフォルダにあるファイル...
-
YAHAMA RTXシリーズのコマンド...
-
共有しているファイルを削除し...
-
TXTファイルを上書き保存する前...
マンスリーランキングこのカテゴリの人気マンスリーQ&Aランキング
-
ls であるファイル以外を表示し...
-
入力/出力エラーですというファ...
-
サブディレクトリも含めて最新...
-
作成したはずのファイルが表示...
-
Linuxである拡張子のファイルだ...
-
FTP 転送コマンド
-
特定の拡張子をもつファイルの...
-
再起動後にフォルダが消えるのは?
-
すべてのファイルに対してgrep...
-
mvコマンドについて
-
Linuxについて質問です。 シェ...
-
ftpコマンドで再帰的にフォ...
-
caclsとは?
-
grepの使い方
-
tarでのdat-tape出力を途中で止...
-
linux(UNIX) の grep で、ある...
-
nkfで全ファイルを変換する
-
wgetで既存の同名ファイルを常...
-
シェルスクリプト ファイル一...
-
ファイル名を元にタイムスタン...
おすすめ情報