[解決済み] ディレクトリ内のファイルをループしてパスを変更し、ファイル名にサフィックスを追加する方法
2022-03-14 21:02:08
質問
異なる引数でプログラムを開始するスクリプトを書く必要があるのですが、Bashは初めてなんです。私は私のプログラムを次のように開始します。
./MyProgram.exe Data/data1.txt [Logs/data1_Log.txt]
.
以下は、私がやりたいことの疑似コードです。
for each filename in /Data do
for int i = 0, i = 3, i++
./MyProgram.exe Data/filename.txt Logs/filename_Log{i}.txt
end for
end for
それで、最初の引数から2番目の引数を作成して、dataABCD_Log1.txtのように見えるようにして、プログラムを開始する方法に本当に困惑しているのです。
どのように解決するのですか?
まず、いくつかの注意点があります。
Data/data1.txt
を引数として指定する必要があります。
/Data/data1.txt
(先頭にスラッシュをつける)? また、外側のループは.txtファイルのみをスキャンするべきでしょうか、それとも/Dataにあるすべてのファイルをスキャンするべきでしょうか?以下は、次のように仮定した場合の答えです。
/Data/data1.txt
と.txtファイルのみです。
#!/bin/bash
for filename in /Data/*.txt; do
for ((i=0; i<=3; i++)); do
./MyProgram.exe "$filename" "Logs/$(basename "$filename" .txt)_Log$i.txt"
done
done
注意事項
-
/Data/*.txt
は、/Data にあるテキストファイルのパスに展開されます ( を含む Data/ の部分) -
$( ... )
シェルコマンドを実行し、その出力をコマンドライン上のその位置に挿入します。 -
basename somepath .txt
は、somepath のベース部分を出力し、末尾から .txt を削除します (例./Data/file.txt
->file
)
でMyProgramを実行する必要があった場合
Data/file.txt
の代わりに
/Data/file.txt
を使用します。
"${filename#/}"
で先頭のスラッシュを削除します。一方、もし本当に
Data
ではなく
/Data
を使用することで、スキャンすることができます。
for filename in Data/*.txt
.
関連
-
[解決済み] systemd サービス 203/EXEC の失敗 (そのようなファイルやディレクトリがない) を修正する。
-
[解決済み] cygwin の ssh が終了時に "Killed by signal 1" と表示される
-
[解決済み] あいまいなリダイレクト」エラーが発生する
-
[解決済み] bashでのDiffコマンド
-
[解決済み] シェルスクリプトでの連想配列
-
[解決済み] ファイルパスからディレクトリパスを抽出する方法は?
-
[解決済み] Bashでパス文字列からファイルのサフィックスとパス部分を削除するにはどうすればよいですか?
-
[解決済み] Bashでsshして複数のコマンドを実行する最もクリーンな方法は何ですか?
-
[解決済み] ディレクトリ内の全ファイルをforループで反復処理する。
-
[解決済み】Bashでファイルパスの引数に含まれる最後のディレクトリ名/ファイル名を取得する
最新
-
nginxです。[emerg] 0.0.0.0:80 への bind() に失敗しました (98: アドレスは既に使用中です)
-
htmlページでギリシャ文字を使うには
-
ピュアhtml+cssでの要素読み込み効果
-
純粋なhtml + cssで五輪を実現するサンプルコード
-
ナビゲーションバー・ドロップダウンメニューのHTML+CSSサンプルコード
-
タイピング効果を実現するピュアhtml+css
-
htmlの選択ボックスのプレースホルダー作成に関する質問
-
html css3 伸縮しない 画像表示効果
-
トップナビゲーションバーメニュー作成用HTML+CSS
-
html+css 実装 サイバーパンク風ボタン
おすすめ
-
[解決済み】 '\r': コマンドが見つかりません - .bashrc / .bash_profile [重複].
-
[解決済み】ZIPエラー - 何もできない
-
[解決済み] bashスクリプトでタブ文字をエコーする
-
[解決済み] Docker ubuntu イメージ - bash: man: コマンドが見つかりません。
-
[解決済み] Bashスクリプトで引数を反復処理する方法
-
[解決済み] eval "$(docker-machine env default) "とする。
-
[解決済み] Curl:応答を待たない[重複]。
-
[解決済み] grepの出力に含まれる重複を削除する
-
[解決済み] シンプルなAsciiテーブルをCSVに変換する【終了】。
-
[解決済み] bashでのDiffコマンド