質問をすることでしか得られない、回答やアドバイスがある。

15分調べてもわからないことは、質問しよう!

新規登録して質問してみよう
ただいま回答率
85.48%
bash

bash(Bourne-again-Shell)は sh(Bourne Shell)のインプリメンテーションに様々な機能が追加されたシェルです。LinuxやMac OS XではBashはデフォルトで導入されています。

Q&A

解決済

4回答

34166閲覧

ディレクトリ配下をすべてcatしたい(ファイル名にスペースあり)

akamakku

総合スコア191

bash

bash(Bourne-again-Shell)は sh(Bourne Shell)のインプリメンテーションに様々な機能が追加されたシェルです。LinuxやMac OS XではBashはデフォルトで導入されています。

0グッド

0クリップ

投稿2017/03/19 14:48

タイトルのとおりですが、
ディレクトリ配下のファイル(ファイル名にスペースを含んだものあり)を全部catしたいです。

bash

1for file in `find ./ -name '*'` 2do 3echo $file 4cat "$file" 5echo 6done

最初は、ファイル名にスペースを含んでいても、一つのファイルを単純に扱う場合は、

bash

1cat "$var"

のように””で囲めば、行けたので、for文の中でも行けるのかなと思ったのですが、
for文によって、file変数に渡されるのが、スペース区切りになっているので、これではうまく行きません。。。

このような場合、どういうふうにやるもんなんでしょうか?

*ファイル名にスペース入れるなはやめてください。。。。

気になる質問をクリップする

クリップした質問は、後からいつでもMYページで確認できます。

またクリップした質問に回答があった際、通知やメールを受け取ることができます。

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

guest

回答4

0

ベストアンサー

書式にこだわりが無ければ、これが簡単です。

Bash

1find -type f -print0 | xargs -0 more | cat

出力書式は、こうなります。

:::::::::::::: ファイル名 :::::::::::::: ファイルの中身

投稿2017/03/19 16:43

otn

総合スコア84538

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

akamakku

2017/03/20 06:07

区切り文字をスペースでなくするオプションがあるんですね! ありがとうございました!
guest

0

こんな感じですかね。

find . -name "*" -type f -print0 | xargs -0 -I {} sh -c 'echo "{}" ; cat "{}"'
find . -name "*" -type f -print0 | while read -r -d '' f; do echo "$f" ; cat "$f" ; done

投稿2017/03/19 16:13

編集2017/03/19 16:14
gorogoroIT

総合スコア447

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

0

catするだけなら。

find . -type f | xargs cat

投稿2017/03/19 16:07

退会済みユーザー

退会済みユーザー

総合スコア0

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

otn

2017/03/19 17:58

「ファイル名にスペースあり」という条件です。
guest

0

以下を試してみてください。

SAVEIFS=$IFS IFS=$(echo -en "\n\b") for file in `find ./ -name '*'` do echo "$file" cat "$file" echo done IFS=$SAVEIFS
find . -type f -name '*' -print0 | while read -d $'\0' file do echo $file cat "$file" echo done

参考: https://www.cyberciti.biz/tips/handling-filenames-with-spaces-in-bash.html

投稿2017/03/19 16:02

tell_k

総合スコア2120

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

15分調べてもわからないことは
teratailで質問しよう!

ただいまの回答率
85.48%

質問をまとめることで
思考を整理して素早く解決

テンプレート機能で
簡単に質問をまとめる

質問する

関連した質問