フォルダ内のすべての.txtファイルのコピーを作成しようとしていますが、名前が.htmlファイルに変更されています。私はそれを実行したときにaを含む文字列を置換します。 sedを使用
for f in my-txt-folder/*.txt
do
a="$(echo $f | sed s/.txt/.html/)"
cp "$f" "$a"
done
これは、これまでの私のコードでは、しかし、私はそれが内包しているフォルダ内の「-txtを」名前を変更するので、私はこのエラーを取得しています知っているエラーに
my.html-folder/file.txt: No such file or directory.
を取得しますしかし、私はそれをどうやって止めるのですか?私はまた、 "\ .txt"を置き換えようとしましたが、それでも囲みフォルダ名は一致していると考えています。どうすれば ".txt"にマッチするだけですか?だれかが尋ねる前に、私はフォルダにドリルダウンしてそこからスクリプトを実行することはできません。
cp
-ingしているときは、ファイル名やパラメータ展開を反復する
for
構文を使用することができます
'sed '/ \ txt/.html /''や 'sed 's/.txt $/.html /''のように '.'をエスケープするバックスラッシュ(バックスラッシュを避ける'.txt'がファイル名を終了し、globは' .'が '.'とマッチすることを保証します)、または...パターンの周りに小さな引用符を使うことに注意してください。それらを使用しない場合は、2つのバックスラッシュを使用する必要があります。また、ファイル名を引用する必要がある場合は、 'a =" $(echo "$ f" | sed s/.txt/.html /) "' - 毎回引用符で囲む必要があります。あなたがそれらを必要とするように。 –
また、regex [here](https://regex101.com/r/aP3bQ6/2)で再生することもできます... – anishsane