重命名子目录中的文件会删除文件

时间:2019-10-08 15:40:51

标签: linux bash

我正在编写一个脚本,用于重命名插入的SD卡上的* .MP4文件,然后对其进行同步。

带有* .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_ 当我按要求执行时,用echo替换mv,这是输出:

/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 :(得分:0)

好的,我通过过滤其他目录名称并将其限制为仅带有* _PANA的目录名称来解决了该问题。我还添加了一个rsync部件,并卸下了SD卡(如果需要使用Zenity)

放置在SD卡上的文本文件将其标识为唯一卡,当将其同步到备份文件夹时,每个文件都具有唯一的名称。在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
相关问题