텍스트 파일의 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).

관련 정보