Как насчет -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
Мне удалось добиться этого с помощью следующего скрипта 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
)
Использование нескольких собственных инструментов оболочки -:
for f in *.jpg
do
mv -- "$f" "${f%.jpg}$(< ${f%.jpg}.txt ).jpg"
done
Синтаксис $(<...)
просит bash прочитать содержимое данного файла. Данный файл создается путем удаления завершающего .jpg
и добавления .txt
.