linux - 重命名子目录中的文件会删除文件
问题描述
我正在编写一个脚本,重命名插入的 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
解决方案
好的,我通过过滤其他目录名称并仅限于带有 *_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
推荐阅读
- twilio - 对 Twilio Flex Elements 的动态更改
- python - Kivy 自定义按钮文本
- javascript - 如何向 php 函数发送 ajax 请求,然后将函数的返回值发送回我的 ajax 函数响应?
- sql - 我想在 SQL 中按周设置下表组中的数据
- wpf - 如何在列表框中绑定元组列表?
- recaptcha - 在 POST 正文中发送 recaptcha 密码而不是 URL 参数
- angular - 在 Angular 服务中使用异步
- paypal - Paypal PDT 不再返回“自定义”值(回归?)
- php - PHP - 多个函数返回TCPDF变量
- javascript - 客户端 javascript 文件在刷新时不会在某些浏览器选项卡中更新,但在新选项卡中很好