LINUX.ORG.RU

История изменений

Исправление legolegs, (текущая версия) :

Правильный вариант. особенно если файлов очень много (тысячи)

find ~/music\ films\ books/music/Borya\ Chistiy-/ -name '*.mp3' |
 while read file; do
   newfile=$(basename "$file" .mp3).bmp;
   mv "$file" "$newfile"
 done

Другой вариант:

set ~/music\ films\ books/music/Borya\ Chistiy-/*/*.mp3
while [ $# -gt 0 ]; do
 newfile=$(basename "$1" .mp3).bmp;
 mv "$1" "$newfile"
 shift
done

третий вариант, с массивом (обрати внимание на кавычки, они обязательны):

FILES=(~/music\ films\ books/music/Borya\ Chistiy-/*/*.mp3)
for i in "${FILES[@]}"; do
 newfile=$(basename "$i" .mp3).bmp;
 mv "$i" "$newfile"
done

Четвёртый вариант, без массива, потому что он не нужен.

for i in ~/music\ films\ books/music/Borya\ Chistiy-/*/*.mp3; do
 newfile=$(basename "$i" .mp3).bmp;
 mv "$i" "$newfile"
done

Исправление legolegs, :

Правильный вариант. особенно если файлов очень много (тысячи)

find ~/music\ films\ books/music/Borya\ Chistiy-/ -name '*.mp3' |
 while read file; do
   newfile=$(basename "$file" .mp3).bmp;
   mv "$file" "$newfile"
 done

Другой вариант:

set ~/music\ films\ books/music/Borya\ Chistiy-/*/*.mp3
while [ $# -gt 0 ]; do
 newfile=$(basename "$1" .mp3).bmp;
 mv "$1" "$newfile"
 shift
done

третий вариант, с массивом (обрати внимание на кавычки, они обязательны):

FILES=(~/music\ films\ books/music/Borya\ Chistiy-/*/*.mp3)
for i in "${FILES[@]}"; do
 newfile=$(basename "$i" .mp3).bmp;
 mv "$i" "$newfile"
done

Исправление legolegs, :

Правильный вариант. особенно если файлов очень много (тысячи)

find ~/music\ films\ books/music/Borya\ Chistiy-/ -name '*.mp3' |
 while read file; do
   newfile=$(basename "$1" .mp3).bmp;
   mv "$1" "$newfile"
 done

Другой вариант:

set ~/music\ films\ books/music/Borya\ Chistiy-/*/*.mp3
while [ $# -gt 0 ]; do
 newfile=$(basename "$1" .mp3).bmp;
 mv "$1" "$newfile"
 shift
done

третий вариант, с массивом (обрати внимание на кавычки, они обязательны):

FILES=(~/music\ films\ books/music/Borya\ Chistiy-/*/*.mp3)
for i in "${FILES[@]}"; do
 newfile=$(basename "$i" .mp3).bmp;
 mv "$i" "$newfile"
done

Исправление legolegs, :

Правильный вариант. особенно если файлов очень много (тысячи)

find ~/music\ films\ books/music/Borya\ Chistiy-/ -name '*.mp3' |
 while read file; do
   newfile=$(basename $file .mp3).bmp;
   mv $file $newfile
 done

Другой вариант:

set ~/music\ films\ books/music/Borya\ Chistiy-/*/*.mp3
while [ $# -gt 0 ]; do
 newfile=$(basename $1 .mp3).bmp;
 mv $1 $newfile
 shift
done

третий вариант, с массивом:

FILES=(~/music\ films\ books/music/Borya\ Chistiy-/*/*.mp3)
for i in "${FILES[@]}"; do
 newfile=$(basename $i .mp3).bmp;
 mv $i $newfile
done

Исходная версия legolegs, :

Правильный вариант. особенно если файлов очень много (тысячи)

find ~/music\ films\ books/music/Borya\ Chistiy-/ -name '*.mp3' |
 while read file; do
   newfile=$(basename $file .mp3).bmp;
   mv $file $newfile
 done

Другой вариант:

set ~/music\ films\ books/music/Borya\ Chistiy-/*/*.mp3
while [ $# -gt 0 ]; do
 newfile=$(basename $1 .mp3).bmp;
 mv $1 $newfile
 shift
done

третий вариант, с массивом:

FILES=(~/music\ films\ books/music/Borya\ Chistiy-/*/*.mp3)
for ((i=0;i<${#FILES[@]};++i)); do
 newfile=$(basename $i .mp3).bmp;
 mv $i $newfile
done