2 つの質問があります。.txt ファイルを含むサブフォルダーを含むフォルダーがあります。txt ファイルの形式は次のとおりです。
{title.of.a.book}.V{4 digit year}.{4 digit issue}.txt
例
to.kill.a.mockingbird.V1960.0001.txt
次の 3 つの情報を引き出したいと思います。
- タイトル (ピリオドの代わりにスペースを使用) 例: to kill a mockingbird
- ボリューム番号 例: 1960
- 発行番号 例: 0001
ここまで書いてきたのは
for file in $(find /home/user/books -type f -name '*.txt')
do
name=$(echo "$file"|sed -e 's/^\(.*\).V.*txt$/\1/')
volume=$(echo "$file"|sed -e 's/^.*V\(\d{4}\).*$/\1/')
issue=$(echo "$file"|sed -e 's/^.*\(\d{4}\).txt$/\1/')
echo "$name" "$volume" "$issue"
done
- 変数を分離するために 3 つの情報を引き出す方法
.
をスペースに置き換える方法
最初にファイルの名前を変更するか(名前を変更するs/./ /g
)、または$name
後で名前を変更するかを決定できません。
name 変数は正しく出力されますが、vol および issue number 変数はファイル名を出力するだけです...