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

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

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

Linuxは、Unixをベースにして開発されたオペレーティングシステムです。日本では「リナックス」と呼ばれています。 主にWebサーバやDNSサーバ、イントラネットなどのサーバ用OSとして利用されています。 上位500のスーパーコンピュータの90%以上はLinuxを使用しています。 携帯端末用のプラットフォームAndroidは、Linuxカーネル上に構築されています。

Windows

Windowsは、マイクロソフト社が開発したオペレーティングシステムです。当初は、MS-DOSに変わるOSとして開発されました。 GUIを採用し、主にインテル系のCPUを搭載したコンピューターで動作します。Windows系OSのシェアは、90%を超えるといわれています。 パソコン用以外に、POSシステムやスマートフォンなどの携帯端末用、サーバ用のOSもあります。

Q&A

3回答

1007閲覧

linuxでのファイルの中身など変えたり、ファイルの出力など・・・

e1c

総合スコア2

Linux

Linuxは、Unixをベースにして開発されたオペレーティングシステムです。日本では「リナックス」と呼ばれています。 主にWebサーバやDNSサーバ、イントラネットなどのサーバ用OSとして利用されています。 上位500のスーパーコンピュータの90%以上はLinuxを使用しています。 携帯端末用のプラットフォームAndroidは、Linuxカーネル上に構築されています。

Windows

Windowsは、マイクロソフト社が開発したオペレーティングシステムです。当初は、MS-DOSに変わるOSとして開発されました。 GUIを採用し、主にインテル系のCPUを搭載したコンピューターで動作します。Windows系OSのシェアは、90%を超えるといわれています。 パソコン用以外に、POSシステムやスマートフォンなどの携帯端末用、サーバ用のOSもあります。

0グッド

0クリップ

投稿2020/10/21 13:20

編集2022/01/12 10:55

linuxで拡張子が例えば.dataだとして、そのファイル名の中身のaという文字をbに全て置き換え、新しく.data1の拡張子としてファイルを書き出す値宇プログラム?やコマンドなどの作成方法などできる限り詳しく教えていただけないでしょうか。
ファイルがある場所がカレントディレクトリとして考えていただければと思います。

プログラミングは初心者ですのでお手柔らかにお願いいたします。

追記[2020/10/21/22:53]$ find . -type f -name "*.data" | xargs sed -i 's/a /b/g' .data1 まで作れたのですが、うまくいかないので、教えていただける方お願いします。

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

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

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

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

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

guest

回答3

0

sedの使い方を調べましょう。

自分で教科書を見て、どうしてもわからないところが出たら質問。
のっけから全部教えてくださいなんてのはダメです。

投稿2020/10/21 13:24

KojiDoi

総合スコア13669

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

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

e1c

2020/10/21 13:49

ありがとうございます。分からないところが出てきましたので教えていただきたいです。 $ find . -type f -name "*.data" | xargs sed -i 's/a /b/g' .data1 ここまで出来ました。実行はまだしていないのですが、おそらく出力できたとしても.data1のファイル名だけ?になってしまうので.dataの前にあったファイルネームは保持したいのですが、 うまく言葉で表現できないのですが、とりあえずこのコマンドでおかしいところなどないでしょうか
guest

0

bash

1$ find . -type f -name "*.data" | xargs -n 1 sh -c "sed 's/a /b/g' {} > {}1"

投稿2020/10/21 16:09

編集2020/10/21 16:22
Y.H.

総合スコア7914

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

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

Y.H.

2020/10/21 16:15

"sh" の前に "echo "を入れるとどんなコマンドに展開されるか表示されるので色々やってみてください。
e1c

2020/10/21 16:19

http://topickup.web.fc2.com/linux/command_option.html こちらで色々と調べたのですが -n, -cの意味が多数あり特定できませんでした。解説などしていただけないでしょうか? また、{} > {}1なども調べても出ないのですが パラメータ展開など関係してるものでしょうか?
Y.H.

2020/10/21 16:48 編集

xargsのmanを参照してください。 https://linuxjm.osdn.jp/html/GNU_findutils/man1/xargs.1.html {}についても記載されてます。 -n 1 : xargsで入力1行毎にコマンド実行 1コマンド毎にリダイレクトしたいために shの-c オプションで「sed を実行し結果をリダイレクトでファイルに出力」 というコマンドを実行してます。
guest

0

xargsでもできますが、わかりやすいのは、whileループでしょう。

sh

1find . -type f -name "*.data" | 2while read file 3do out=${file/.data/.data1} 4 sed 's/a/b/g' $file > $out 5done

投稿2020/10/21 14:11

otn

総合スコア84423

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

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

e1c

2020/10/21 15:51

out = のところが調べても出てこないのと =の右側はどういう仕組みになってるのでしょうか?
otn

2020/10/21 15:56

man bash の 「パラメータの展開」節を見てください。 まあ、1を付けるだけなら out=${file}1 でもいいです。 「拡張子を別のものに変更する」と一般化するとこういう置換構文を使います。
guest

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

まだベストアンサーが選ばれていません

会員登録して回答してみよう

アカウントをお持ちの方は

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

ただいまの回答率
85.50%

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

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

質問する

関連した質問