用于将文件重新排列到正确文件夹中的脚本

问题描述 投票:0回答:1

我有一个包含三列的csv文件:第一列有两个不同的条目,不好或很好。第2列中的不同条目是学习,查询和测试,第3列是文件路径名,指示在哪里找到文件。

bad test vff/v1/room_10-to-room_19_CDFFN5D5_x_0000  
bad test vff/v1/room_10-to-room_19_BVFGFGN5D5_x_0023  
bad learn vff2/v3/room_01-to-room_02_ERTY8LOK_x_00039  
bad learn vff/v3/room_01-to-room_02_TRT8LOK_x_00210  
bad query vff/v3/room_16-to-room_08_56TCS95_y_00020  
bad query vff2/v3/room_16-to-room_08_856C6S95_y_00201  
good test person/room_44/exit_call_room__5818     
good test person/room_34/cleaning_pan__812   
good learn person/room_43/walking_in_cafe_edited__717  
good learn person/room_54/enterit_call_room__387  
good query person/room_65/talki_speech_cry__1080  
good query person/room_75/walking_against_wall__835 

使用此csv,我想基于第2列创建三个文件夹。因此,基本上,请使用第2列创建三个文件夹,即测试,学习和查询。在这3个文件夹的每个文件夹中,我想基于第1列创建两个文件夹,即坏文件夹和好文件夹。然后能够使用第3列提取数据并将相应的文件放在这些定义的文件夹中。是否有可以执行此操作的python或命令行脚本?

python bash shell command-line batch-processing
1个回答
0
投票

假设此csv文件名为file.csv

#!/bin/bash
FILE="file.csv"

# Create direcory structure
for C2 in `cat ${FILE} | cut -f 2 -d ',' | sort -u`
do
    for C1 in `cat ${FILE} | cut -f 1 -d ',' | sort -u`
    do
        mkdir -p "${C2}/${C1}"
    done
done

# Move files
while IFS= read -r line
do
    file="$(echo $line | cut -f 3 -d ',' | tr -d ' ')"
    dir="$(echo $line | cut -f 2 -d ',' | tr -d ' ')"
    dir+="/$(echo $line | cut -f 1 -d ',')"
    mv "${file}" "${dir}"
done < "${FILE}"
© www.soinside.com 2019 - 2024. All rights reserved.