cd /media/root1/D/Workspace/paper/data/nuscenes-all/train/v1.0-trainval02_blobs/samples/ for dir in */; do if [ -d "/media/root1/D/Workspace/paper/data/nuscenes-all/train/samples/$dir" ]; then mv "$dir"* "/media/root1/D/Workspace/paper/data/nuscenes-all/train/samples/$dir" else mv "$dir" "/media/root1/D/Workspace/paper/data/nuscenes-all/train/samples/" fi done这个段代码中若子文件中有样本名称相同保留一个即可
时间: 2023-07-05 20:29:56 浏览: 48
可以在if语句中加入一个判断,如果目标文件夹中已经存在同名文件,则跳过该文件的移动操作。修改后的代码如下:
```
cd /media/root1/D/Workspace/paper/data/nuscenes-all/train/v1.0-trainval02_blobs/samples/
for dir in */;
do
if [ -d "/media/root1/D/Workspace/paper/data/nuscenes-all/train/samples/$dir" ];
then
for file in $dir*;
do
if [ ! -f "/media/root1/D/Workspace/paper/data/nuscenes-all/train/samples/$dir/$file" ];
then
mv "$file" "/media/root1/D/Workspace/paper/data/nuscenes-all/train/samples/$dir"
fi
done
else
mv "$dir" "/media/root1/D/Workspace/paper/data/nuscenes-all/train/samples/"
fi
done
```
这里使用了一个嵌套的for循环,遍历源文件夹中每个子文件夹下的文件,如果目标文件夹中已经存在同名文件,则跳过该文件的移动操作。