Переименуйте фотографии в соответствии с названиями

Используйте uniq -c для генерации подсчетов из вашего файла:

4 1043481872
4 1043481873
3 1043481874
1 1043481875

Постройте график точек данных с помощью gnuplot; соответствующий оператор plot в конфигурации gnuplot будет включать

plot … using 2:1

транспонирование порядка X/Y выходных данных из uniq.

3
26.05.2019, 15:37
2 ответа

Попробуйте:

for movie in./*/*.mp4; do mv -- "${movie%/*}/folder.jpg" "${movie%.mp4}.jpg"; done

${movie%/*}и ${movie%.mp4}являются примерами удаления суффикса . ${movie%/*}возвращает каталог, в котором находится файл фильма, а ${movie%.mp4}возвращает имя файла фильма без расширения .mp4.

Пример

Рассмотрим три каталога dir1, dir2и dir3с файлами:

$ ls -1 */*
dir1/Animal Crackers.mp4
dir1/Animal Crackers.xml
dir1/folder.jpg
dir2/folder.jpg
dir2/Monkey Business.mp4
dir2/Monkey Business.xml
dir3/Duck Soup.mp4
dir3/Duck Soup.xml
dir3/folder.jpg

Теперь запустите нашу команду:

$ for movie in./*/*.mp4; do mv -- "${movie%/*}/folder.jpg" "${movie%.mp4}.jpg"; done

После запуска нашей команды файлы будут:

$ ls -1 */*
dir1/Animal Crackers.jpg
dir1/Animal Crackers.mp4
dir1/Animal Crackers.xml
dir2/Monkey Business.jpg
dir2/Monkey Business.mp4
dir2/Monkey Business.xml
dir3/Duck Soup.jpg
dir3/Duck Soup.mp4
dir3/Duck Soup.xml

Многострочная версия

Для тех, кто предпочитает, чтобы их команды располагались на нескольких строках:

for movie in./*/*.mp4
do
    mv -- "${movie%/*}/folder.jpg" "${movie%.mp4}.jpg"
done
7
27.01.2020, 21:12
find. -type f -name "*.mp4" -execdir bash -c ' [[ -f folder.jpg ]] && mv -v folder.jpg "$(basename {}.mp4).jpg"' \;
0
27.01.2020, 21:12

Теги

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