テキストファイルのTEXTを他のファイルのファイル名の末尾に追加するには?

テキストファイルのTEXTを他のファイルのファイル名の末尾に追加するには?

flickr.comから複数の画像をダウンロードし、画像ファイルと一緒にタグ情報を別のテキストファイルに保存する方法を見つけました。

たとえば、

$ ls
2675.jpg
2675.txt

$ cat 2675.txt
_tags_mountains_daylight_oregon

ファイル名の末尾にタグ情報をコピーしたい。

今後:

2675.jpg

後ろに:

2675_tags_mountains_daylight_oregon.jpg

これを行う方法はありますか? Bashスクリプトに入れることができるものはありますか?

答え1

一部のシェル基本ツールを使用します。

for f in *.jpg
do
  mv -- "$f" "${f%.jpg}$(< ${f%.jpg}.txt ).jpg"
done

この$(< ...)構文は bash に与えられたファイルの内容を読むように要求します。指定されたファイルは、末尾と追加を削除することによって.jpg追加されます.txt

答え2

これを行うには、次のbashスクリプトを使用できます。

#!/bin/bash

files='/path/to/files'

for file in "$files/"*.jpg; do
    tag=$(grep '_tags_' "${file/.jpg/.txt}")
    bname=${file%.jpg}
    mv "$file" "${bname}${tag}.jpg"
done

.jpgこれは、指定したパスのすべてのファイルを繰り返します。

tag_tags_.txt処理中の現在のファイルと同じ名前のファイルの文字列に対して Grep を実行し、.jpgそれを完全行に設定します。

bname処理中の現在のファイルのデフォルト名(拡張子なし)に設定されます。

次に、ファイル名をname / tag.jpgに変更します(例でも同様2675_tags_mountains_daylight_oregon.jpg)。

関連情報