user/admin/1/2/[ac]サブディレクトリにはそれぞれ2つのファイルがあります。
このファイルは preQC_1.txt および preQC_2.txt です。どちらのファイルも私のツールへの入力として使用されます。
forループで "${f##*/}"をpreQC_1.txtとして使用しています。
for f in ~/1/2/*/*_1.txt; do exptool input1= "${f##*/}" input2= "{$f%_1.txt}_2.txt"
私のプログラムは "{$f%_1.txt}_2.txt"ファイルを表示し、パラメータ拡張を誤って使用していると100%確信しています。 input2の場合、「preQC_2.txt」(ファイル名+拡張子、ディレクトリリストなし)のみをインポートするにはどうすればよいですか?
編集:「${f##*/}」と{$f%_1.txt}_2.txt」を結合しようとしましたが、実際には「user/admin/1/2/a/preQC_1.txt_2.txt」に拡張されました。
答え1
for f in ~/1/2/*/*_1.txt; do
file_without_path="${f##*/}"
exptool input1= "${file_without_path}" input2= "${file_without_pathf%_1.txt}_2.txt"
done
答え2
私は文法エラーを犯しました。"{$f%_1.txt}_2.txt"
作成時の正しい形式は"${f%_1.txt}_2.txt"
(間違った$
文字を入力しました)でした。
:)
編集: 申し訳ありません。ブロック内で"${f%_1.txt}_2.txt"
値f
がまだuser/admin/1/2/a/preQC_1.txt
基本的に"${f%_1.txt}_2.txt"
値がuser/admin/1/2/a/preQC_2.txt
望むものではないので間違いをしました。まず、値を更新することをお勧めし
ます。f
for f in ~/1/2/*/*_1.txt
f=${f##*/}
do exptool input1= "$f" input2= "${f%_1.txt}_2.txt"
done
これはHauke Lagingの答えとほぼ一致しています。