重命名从csv PDF文件列表创建的目录

时间:2018-06-13 20:04:38

标签: bash shell unix scripting

我正在处理一个bash脚本文件,其中我有一个预先生成的PDF文件列表,首先根据CSV映射重命名,然后我需要为每个文件创建一个文件夹,然后将它们移动到它。

第一部分我没有问题,但是对于第二部分,每个文件的目录需要命名与PDF文件名相同,没有.pdf后缀。

我当前(尝试)创建目录名称的方式是在从CSV重命名后使用PDF文件的名称。

使用“正确”目录名称的映射向我的CSV添加列不是一个选项,因此我不能将其用作解决方法。

我目前的脚本如下:

#!/usr/bin/tcsh bash
sed 's/"//g' rename_list_authpers.csv | while IFS=, read orig new; do 
    mv "$orig" "$new"
    mkdir -p "$new"
done
echo 'Done.'

作为参考,"$new"文件名采用以下格式:Prefix_Code#_Lastname.FirstName.pdf

我尝试了mkdir -p ${"$new"%.*}甚至mkdir -p "$new"%.*之类的东西,只是为了看看我是否可以得到一个有效的输出,即使名称本身被分隔符切断,但没有任何作用,我通常只是得到乱码目录名称。

编辑:其他线程中的解决方案对我不起作用的原因是我忘记使用bash而不是./script_name来调用我的脚本,因此该解决方案实际上可以用于此。< / p>

完全可用的脚本现在看起来像这样:

    #!/usr/bin/tcsh bash
    sed 's/"//g' list_lab_authpers.csv | while IFS=, read orig new num; do 
        mv "$orig" "$new"
    done
    echo 'Rename  Done.'
    for file in *.pdf; do
       mkdir "${file%.*}"
       mv "$file" "${file%.*}"
    done
    echo 'Directory creation done.'

0 个答案:

没有答案