переименовать файлы с расширением .jpg в соответствии с именем папки с помощью bash-скрипта - PullRequest
8 голосов
/ 18 марта 2011

У меня есть файл .jpg в моей папке и ее подпапках.

image/1/large/imagexyz.jpg 
image/1/medium/imageabc.jpg
image/1/small/imagedef.jpg

и т. Д. Для 2,3,4 ...

Мне нужно переименовать все файлы изображенийс именем папки.то есть.imagexyz.jpg должно быть large_1.jpg, а imageabc.jpg должно быть medium_1.jpg и т. д.

Ответы [ 4 ]

3 голосов
/ 18 марта 2011
#!/bin/sh
find . -type f -name "*.$1" > list
while read line
do
echo $line
first=`echo $line | awk -F/ '{print $2}'`
echo $first 
second=`echo $line | awk -F/ '{print $3}'`
echo $second
name=`echo $line | awk -F/ '{print $4}'`
echo $name

mv "./$first/$second/$name" ./$first/$second/${first}_${second}.$1

done < list

Если вы сохраните этот файл как rename.sh, запустите rename.sh jpg для замены файлов jpg и rename.sh png для замены png и т. Д.

3 голосов
/ 18 марта 2011
oldIFS="$IFS"
IFS=/
while read -r -d $'\0' pathname; do
  # expect pathname to look like "image/1/large/file.name.jpg"
  set -- $pathname
  mv "$pathname" "$(dirname "$pathname")/${3}_${2}.jpg"
done < <(find . -name \*.jpg -print0)
IFS="$oldIFS"
2 голосов
/ 18 марта 2011

Решение, основанное на собственных функциях bash (ну, кроме find, затем ;-))

#!/bin/bash

files=`find . -type f -name *.jpg`
for f in $files
do
     echo
     echo $f
     # convert f to an array
     IFS='/'
     a=($f)
     unset IFS
     # now, the folder containing a digit
     # are @ index [2]
     # small, medium, large are @ [3]
     # and name of file @ [4]

     echo ${a[2]} ${a[3]} ${a[4]}
     echo ${a[3]}_${a[2]}.jpg
done
1 голос
/ 18 марта 2011

Вы имели в виду что-то подобное?

for i in $(find image/ -type f); do 
  mv $i $(echo $i | sed -r 's#image/([0-9]+)/([^/]+)/[^/]+.jpg#\2_\1.jpg#'); 
done

Это переместит все файлы с image/$number/$size/$file.jpg на ./${size}_${number}.jpg.

Но учтите, что вы перезапишете свои файлы, если в каждом каталоге image/$number/$size будет более одного файла .jpg (см. Комментарий kurumi).

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...