![텍스트 파일의 TEXT를 다른 파일의 파일 이름 끝에 추가하는 방법은 무엇입니까?](https://linux55.com/image/131556/%ED%85%8D%EC%8A%A4%ED%8A%B8%20%ED%8C%8C%EC%9D%BC%EC%9D%98%20TEXT%EB%A5%BC%20%EB%8B%A4%EB%A5%B8%20%ED%8C%8C%EC%9D%BC%EC%9D%98%20%ED%8C%8C%EC%9D%BC%20%EC%9D%B4%EB%A6%84%20%EB%81%9D%EC%97%90%20%EC%B6%94%EA%B0%80%ED%95%98%EB%8A%94%20%EB%B0%A9%EB%B2%95%EC%9D%80%20%EB%AC%B4%EC%97%87%EC%9E%85%EB%8B%88%EA%B9%8C%3F.png)
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
).