我正在处理一个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"%.*
之类的东西,只是为了看看我是否可以得到一个有效的输出,即使名称本身被分隔符切断,但没有任何作用,我通常只是得到乱码目录名称。
./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.'