募集中

シェルスクリプトde &

Linux

2022年09月08日 08:09

私が行いたい操作は二つございます。

【一つ目】
異なる複数のディレクトリに保存されている、ファイル名に特定の文字列を含むファイルのコピーを作成し、ファイル名を変更し、一つのディレクトリにまとめて保存したいです。
上記の操作を、シェルスクリプトで実行したいです。

以下のようにシェルスクリプトを書きました。
ーーーーーーーーーーーーーーーーーーーーーーー
#!/bin/sh
for id in aaa bbb
do
find ./${id} -name AAA.txt
cp AAA.txt ${id}.txt
(ディレクトリから${id}.txtを抽出するコマンド)
mv ${id} ./ccc
done
ーーーーーーーーーーーーーーーーーーーーーーー
1. "for id in aaa bbb"で、リストを変数にセットし、
2. "find ./${id} -name AAA.txt"で、リストの名前を持つ各ディレクトリの中にあるAAA.txtを検索し、
3. "cp AAA.txt ${id}"で、各ディレクトリにあるAAA.txtのファイルをコピーし、AAA.txtの拡張子よりも前の部分を元あったディレクトリ名(${id}.txt)に書き換え、
4. "mv ${id}.txt ./ccc"で、${id}.txtをディレクトリ"ccc"に保存する。

スクリプトの内容が合っているかご確認いただけますでしょうか。また、3.から4.の部分で、複数のディレクトリからファイルを抽出する操作をコマンドを教えていただきたく存じます。

【二つ目】
テキストファイルに保存されている縦に並んだ文字列に対し、改行を半角スペースやカンマに変えて横に並べる操作をターミナルで実行したいです。
"perl -pe 's/\n/ /g'"や"perl -pe 's/\n/,/g'"を実行しエラーは出なかったのですが、実行結果が出ませんでした。正しく実行されるコマンドの書き方を教えていただきたく存じます。

投稿をお読みいただきありがとうございました。
長文失礼いたします。

オープンチャット


オープンチャットはありません。

回答可能なメンター

まだいません。