最近シェルスクリプトを勉強し始めました。
が、いきなり躓いています。
諸先輩方に教えていただきたいと思います。
カレントディレクトリにPC1 PC2 PC3 ・・・・PC100
という名前の100個のディレクトリがあります。
この100個のディレクトリの中にそれぞれPC1.txt PC2.txt PC3.txt・・・PC100.txtが入っています。つまりPC1ディレクトリの中にはPC1.txtが入っていて、PC2ディレクトリの中にはPC2.txtが、PC3ディレクトリの中にはPC3.txtが、、、というあんばいです。
カレントディレクトリにnewというディレクトリを作成して、その中にPC1.txt PC2.txt・・・PC100.txtをコピーしたいのですが、どのようにしたらよいでしょうか。
繰り返し処理をすればよいのでしょうか・・・。
初心者にも分かるようにご教示いただけますとありがたいです。よろしくお願いいたします。
No.2ベストアンサー
- 回答日時:
#!/bin/sh
for s in PC*
do
cp $s/$s.txt コピー先
done
実用的には安全のために、
コピー元が正しいかのチェックを
組み込む必要があるでしょう。
No.3
- 回答日時:
mkdir new
cp PC1/PC1.txt new
cp PC2/PC2.txt new
cp PC3/PC3.txt new
(略)
cp PC98/PC98.txt new
cp PC99/PC99.txt new
cp PC100/PC100.txt new
全部そのまま書けば、ループは不要です。
これなら初心者でも分かるでしょ?
100個手で打つのが面倒なら、上のスクリプトを出力するプログラムを、自分の知ってる言語で作ればいいのです。
Perlの例)
perl -E 'say "mkdir new";for($i=1;$i<=100;$i++) { printf("cp PC%d/PC%d.txt new\n",$i,$i);}'
これをそのままshにパイプラインで送れば、シェルスクリプトのファイルは不要です
perl -E 'say "mkdir new";for($i=1;$i<=100;$i++) { printf("cp PC%d/PC%d.txt new\n",$i,$i);}' |
他にも、
ls や find でファイル一覧を作成 → sed で処理して、 上記cp〜 に置き換え → sh で実行
というやりかたもあります。
お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!
関連するカテゴリからQ&Aを探す
おすすめ情報
- ・漫画をレンタルでお得に読める!
- ・人生のプチ美学を教えてください!!
- ・10秒目をつむったら…
- ・あなたの習慣について教えてください!!
- ・牛、豚、鶏、どれか一つ食べられなくなるとしたら?
- ・【大喜利】【投稿~9/18】 おとぎ話『桃太郎』の知られざるエピソード
- ・街中で見かけて「グッときた人」の思い出
- ・「一気に最後まで読んだ」本、教えて下さい!
- ・幼稚園時代「何組」でしたか?
- ・激凹みから立ち直る方法
- ・1つだけ過去を変えられるとしたら?
- ・【あるあるbot連動企画】あるあるbotに投稿したけど採用されなかったあるある募集
- ・【あるあるbot連動企画】フォロワー20万人のアカウントであなたのあるあるを披露してみませんか?
- ・映画のエンドロール観る派?観ない派?
- ・海外旅行から帰ってきたら、まず何を食べる?
- ・誕生日にもらった意外なもの
- ・天使と悪魔選手権
- ・ちょっと先の未来クイズ第2問
- ・【大喜利】【投稿~9/7】 ロボットの住む世界で流行ってる罰ゲームとは?
- ・推しミネラルウォーターはありますか?
- ・都道府県穴埋めゲーム
- ・この人頭いいなと思ったエピソード
- ・準・究極の選択
デイリーランキングこのカテゴリの人気デイリーQ&Aランキング
-
ファイル名を複数個配列で確保...
-
特定のデータを更新する
-
タイピング文字の一番後ろがお...
-
テキストファイルの各行を配列...
-
ExcelをCSV書き出す場合のシー...
-
エクセルVBA コードが同じでも...
-
VBAでCSVファイルを途中行まで...
-
batファイルでrenameができませ...
-
VBAでCSVファイルの特定行を書...
-
VBAでタブ区切りテキストの保存...
-
全角と半角文字が混在している...
-
バッチファイルの作り方(CSV→...
-
sprintfについて
-
close()で例外が投げられる理由
-
拡張子 ”log” と ” dat” の違い
-
Perlで特定行から特定行までを...
-
Perl cgiの文字化けを直したい ...
-
openした後、closeしないでプロ...
-
ディレクトリ名を取得したい
-
CSVが可変長の場合の検索方法
マンスリーランキングこのカテゴリの人気マンスリーQ&Aランキング
-
「パスが見つかりません」とい...
-
ファイル名を複数個配列で確保...
-
perlで先頭の数値をみて昇順に...
-
Perl エラーログを指定の場所...
-
Pythonでegrep機能をつかいたい
-
Visual Basicを使って三平方の...
-
perlでCSVをソートする方法につ...
-
ifstream を利用した1行分のテ...
-
Pythonで非日本語のUnicode文字...
-
perlプログラム 外部複数ファ...
-
Perlによるディレクトリ内の連...
-
system関数と引数について
-
C++でのテキストファイル読み込...
-
Perlのワンライナーをスクリプ...
-
バッチファイルでテキストファ...
-
Perl 重複カウント 上位3名
-
perlで指定範囲を複数ファイル...
-
perl 計算結果をファイルへ出力...
-
一行だけ読込
-
Fortranで1行飛ばして読み込む方法
おすすめ情報