Как добавить ТЕКСТ внутри текстового файла в КОНЕЦ имени файла другого файла?

Как насчет -exec du после -printf?

например:

jon@local$ find . -maxdepth 1 -not -iname "." -printf '[%TY-%Tm-%Td]\t' -exec du -bh {} \;
[2015-04-01]    1.6K    ./main.go
[2015-04-01]    5.2K    ./main_test.go
0
15.04.2018, 01:18
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с тем же именем, что и текущий файл .jpg, над которым он работает, и будет установлен на всю эту строку.

bnameбудет установлено базовое имя текущего файла, над которым он работает (без расширения)

Затем он переименует файл в name/tag.jpg (Таким образом, в случае с примером2675_tags_mountains_daylight_oregon.jpg)

1
28.01.2020, 02:23

Использование нескольких собственных инструментов оболочки -:

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

Синтаксис $(<...)просит bash прочитать содержимое данного файла. Данный файл создается путем удаления завершающего .jpgи добавления .txt.

2
28.01.2020, 02:23

Теги

Похожие вопросы