所以愚蠢的不耐烦,我在19.04服务器上使用了以下脚本,试图将一堆视频文件移动到带有前缀的文件夹中:
dirs=(A B C D E F G H I J K L M N O P Q R S T U V W X Y Z)
shopt -s nocasematch
for file in *
do
for dir in "${dirs[@]}"
do
if [ -d "$file" ]; then
echo 'this is a dir, skipping'
break
else
if [[ $file =~ ^[$dir] ]]; then
echo "----> $file moves into -> $dir <----"
mv "$file" "$dir"
break
fi
fi
done
done
不知道哪里出了错,但是没有将文件移动到文件夹,而是转到了单个输出..所以:
----> a1.ts moves into -> A <----
----> a2.ts moves into -> A <----
----> a3.ts moves into -> A <----
----> a4.ts moves into -> A <----
----> a5.ts moves into -> A <----
----> c1.ts moves into -> C <----
----> c2.ts moves into -> C <----
----> c3.ts moves into -> C <----
----> c4.ts moves into -> C <----
----> c5.ts moves into -> C <----
幸运的是,我发现进程没有按预期进行并且没有遍历整个文件夹,因此我立即停止了该进程(CTRL + C)。
因此,现在我有了小于Gb的那些文件A
和C
,从外观上看,它是一个单视频。
文件夹本身的总磁盘使用量中有50Gb未被占用,但是计算机的总磁盘空间保持不变。让我觉得文件没有被删除?
任何帮助表示赞赏,谢谢:)
编辑:文件实际上不见了,只有最后一个要写入的文件保留了,只花了一些时间来更新磁盘使用信息。故事的实质是,在模拟文件上运行脚本!
mv "$file" "$dir/"
,带有结尾/
;如果$dir
不存在,mv
则会发生错误,而不是将其重命名$file
为$dir
。同时考虑mv -i
和mv -n
。并始终mkdir -p
在移动前做好准备,以取得良好效果。
A
,B
并运行该脚本之前等存在?如果不是,您只是重命名了文件。名称以开头a
或A
已重命名为的所有文件A
,因此只有最后一个重命名的文件可以保存,其他文件将被覆盖。调用变量dir
不会创建目录!