Переименование файлов в подкаталогах удаляет файлы - PullRequest
0 голосов
/ 08 октября 2019

Я пишу сценарий, который переименовывает файлы * .MP4 на вставленной SD-карте и затем выполняет их синхронизацию.

Каталог с файлами * .MP4 не всегда имеет одно и то же имя: например, он можетбыть / DCIM / 123_PANA / или / DCIM / 141_PANA / и т. д. Поэтому я пытаюсь написать сценарий, который будет видеть, какие папки находятся в пути / DCIM, и переименовывать все файлы * .MP4 (также есть папка MISCв этом пути, который я подозреваю, вызывает проблему) Я использую несколько переменных, чтобы переименовать файлы также

Что у меня есть:

for f in /media/pi/LUMIX/DCIM/*; do
    if [ -d "$f" ]; then
        echo $f
        for file in $(find $f -name 'P*.MP4')
        do
            echo $file  ">" $(dirname "${file}")/$(date +"%d")$cardname$(basename $file)
            mv $file $(dirname "${file}")/$(date +"%d")$cardname$(basename $file)
        done
    fi
done

Но, кажется, что яв итоге в папке _PANA будет только один файл с префиксом (скажем, 08_nb1_), все остальные будут удалены. Очевидно, это не мой желаемый результат!

ОБНОВЛЕНИЕ: $ cardname имеет формат _nb2_ Когда я делаю так, как просили, замените mv на echo, вот вывод:

/media/pi/LUMIX/DCIM/141_PANA
mv /media/pi/LUMIX/DCIM/141_PANA/P1410192.MP4 /media/pi/LUMIX/DCIM/141_PANA/09_nb2_P1410192.MP4
mv /media/pi/LUMIX/DCIM/141_PANA/P1410193.MP4 /media/pi/LUMIX/DCIM/141_PANA/09_nb2_P1410193.MP4
mv /media/pi/LUMIX/DCIM/141_PANA/P1410194.MP4 /media/pi/LUMIX/DCIM/141_PANA/09_nb2_P1410194.MP4
mv /media/pi/LUMIX/DCIM/141_PANA/P1410195.MP4 /media/pi/LUMIX/DCIM/141_PANA/09_nb2_P1410195.MP4
mv /media/pi/LUMIX/DCIM/141_PANA/P1410196.MP4 /media/pi/LUMIX/DCIM/141_PANA/09_nb2_P1410196.MP4
mv /media/pi/LUMIX/DCIM/141_PANA/P1410197.MP4 /media/pi/LUMIX/DCIM/141_PANA/09_nb2_P1410197.MP4
mv /media/pi/LUMIX/DCIM/141_PANA/P1410198.MP4 /media/pi/LUMIX/DCIM/141_PANA/09_nb2_P1410198.MP4
mv /media/pi/LUMIX/DCIM/141_PANA/P1410199.MP4 /media/pi/LUMIX/DCIM/141_PANA/09_nb2_P1410199.MP4
mv /media/pi/LUMIX/DCIM/141_PANA/P1410200.MP4 /media/pi/LUMIX/DCIM/141_PANA/09_nb2_P1410200.MP4
mv /media/pi/LUMIX/DCIM/141_PANA/P1410201.MP4 /media/pi/LUMIX/DCIM/141_PANA/09_nb2_P1410201.MP4
mv /media/pi/LUMIX/DCIM/141_PANA/P1410202.MP4 /media/pi/LUMIX/DCIM/141_PANA/09_nb2_P1410202.MP4
mv /media/pi/LUMIX/DCIM/141_PANA/P1410203.MP4 /media/pi/LUMIX/DCIM/141_PANA/09_nb2_P1410203.MP4
mv /media/pi/LUMIX/DCIM/141_PANA/P1410204.MP4 /media/pi/LUMIX/DCIM/141_PANA/09_nb2_P1410204.MP4
/media/pi/LUMIX/DCIM/MISC

1 Ответ

0 голосов
/ 10 октября 2019

ОК. Я исправил это, отфильтровав дополнительные имена каталогов и ограничившись только именами с * _PANA - что решило проблему. Я также добавил часть rsync и демонтировал SD-карту (если требуется с помощью Zenity)

Текстовый файл, помещенный на SD-карту, идентифицирует ее как уникальную карту, присваивая каждому файлу уникальное имя при rsyncing его в резервную копиюпапки. Переименование на SD-карте означает, что она все еще может быть использована как записанная, если не полная, но мы тогда знаем, какие файлы были заархивированы. Очень полезно в поле при съемках с нескольких карт экипажей. Все работает на Rpi4

for f in /media/pi/LUMIX/DCIM/*_PANA/; do
    if [ -d "$f" ]; then
        echo "$f"

                for file in $(find $f -wholename '*_PANA/P*.MP4')
                do

                mv "$file" $(dirname "${file}")/$(date +"%d")"$cardname"$(basename "${file}")
    done
        rsync --stats -u --progress "$f"/*.MP4 /media/pi/VDRIVE/ | tee /home/pi/Documents/ytu/rsync.txt  | zenity  --icon-name="dialog-warning" \
        --width=300 --progress --pulsate --auto-close --auto-kill \
         --title="Copying $sdn" 
        zenity --question --text="Unmount Card?"
        if [ $? = 0 ]; then
                umount /media/pi/LUMIX
        else
                exit
        fi

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