首页 > 解决方案 > 重命名子目录中的文件会删除文件

问题描述

我正在编写一个脚本,重命名插入的 SD 卡上的 *.MP4 文件,然后对它们进行 rsync。

*.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

标签: linuxbash

解决方案


好的,我通过过滤其他目录名称并仅限于带有 *_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

推荐阅读