- PR -

【シェル】特定パス配下の全てのファイルに対してコマンドを実行する

1
投稿者投稿内容
Portgass
会議室デビュー日: 2006/12/25
投稿数: 3
投稿日時: 2006-12-25 11:57
今回特定パス配下の全てのファイルに対して特定のコマンドを
実行する方法を探しています。

例)以下のようなファイルが存在した場合に全てのファイルの
  中身をシェルの実行により一括表示する。
/home/work/test1.txt
/home/work/test2.txt
/home/work/01/test01.txt

もちろんシェルファイルに以下を記載すれば全てのファイルの
中身は表示されます。
cat /home/work/test1.txt
cat /home/work/test2.txt
cat /home/work/01/test01.txt

例えばシェルファイルを作成し、パスを指定する事により、
指定パス配下の全てのファイルに対して cat コマンドが
実行されるようなシェルを作成したいのですが。。。
例)$shellcat.sh /home/work
  このコマンドにより、上記のcat 結果と同様の結果が
  出力される。


どなたかアドバイスをお願いいたします。。。
SHR
ベテラン
会議室デビュー日: 2006/06/15
投稿数: 99
投稿日時: 2006-12-25 12:45
1. find /home/work/ -type f | xargs cat
2. find /home/work/ -type f -exec cat {} \;

各オプションと両者の違いは調べてみましょう。

※2に-typeが抜けていたので修正

[ メッセージ編集済み 編集者: SHR 編集日時 2006-12-25 12:49 ]
温州蜜柑
ベテラン
会議室デビュー日: 2005/01/24
投稿数: 65
お住まい・勤務地: 東京都
投稿日時: 2006-12-25 12:50
引用:

Portgassさんの書き込み (2006-12-25 11:57) より:
今回特定パス配下の全てのファイルに対して特定のコマンドを
実行する方法を探しています。

例)以下のようなファイルが存在した場合に全てのファイルの
  中身をシェルの実行により一括表示する。
/home/work/test1.txt
/home/work/test2.txt
/home/work/01/test01.txt

もちろんシェルファイルに以下を記載すれば全てのファイルの
中身は表示されます。
cat /home/work/test1.txt
cat /home/work/test2.txt
cat /home/work/01/test01.txt

例えばシェルファイルを作成し、パスを指定する事により、
指定パス配下の全てのファイルに対して cat コマンドが
実行されるようなシェルを作成したいのですが。。。
例)$shellcat.sh /home/work
  このコマンドにより、上記のcat 結果と同様の結果が
  出力される。


どなたかアドバイスをお願いいたします。。。



こんなかんじですね。
検索結果にread権限が無い場合などの細かい仕様は考慮されてませんが。
コード:
#!/bin/sh

if [ $# = 0 ]; then
	exit 1
fi

if [ ! -d $1 ]; then
	exit 2
fi

find $1 -type f -name ¥*.txt| xargs cat

exit 0


ペンちゃん
ベテラン
会議室デビュー日: 2006/08/04
投稿数: 61
投稿日時: 2006-12-25 13:47
マルチポスト
http://www.kotaete-net.net/Default.aspx?pgid=14&qid=80269896846
Portgass
会議室デビュー日: 2006/12/25
投稿数: 3
投稿日時: 2006-12-25 14:15
SHR さん、温州蜜柑さん
ご回答ありがとうございいました。

SHR さんの find コマンドにて実行できました。
引き続き勉強を続けていきます!

ありがとうございます。
koji
常連さん
会議室デビュー日: 2004/11/04
投稿数: 36
お住まい・勤務地: 北海道
投稿日時: 2006-12-25 18:42
xargsを使うんであれば

$ find .... -print0 | xargs -0 ....
こちらも覚えておくといいかもしれません
1

スキルアップ/キャリアアップ(JOB@IT)